java 默認的靜態數組array長度是int類型e.g.int size = blah blah;int[] array = new int[size];出于效率的需要現在我需要將多維數組壓縮成一維數組存儲 而int類型的正數范圍只有 0 ~ 2^31-1 也就是意味著我的array的大小只能到2^31
2 回答

ITMISS
TA貢獻1871條經驗 獲得超8個贊
首先,針對你的問題給出答案:完全可以參考一下java.util.ArrayList的源碼,自己包裝一個不定長的一維數組,只不過這個抽象的一維數組里面是有多個一維數組構成,不過這種的方式的效率一般比多維數組低。
其次,對于你所說的
出于效率的需要現在我需要將多維數組壓縮成一維數組存儲
我持不同看法。首先,多維數組的內存存儲也是連續的,訪問效率跟一維數組相比,沒你想的那么低,而且語言內置的多維數組尋址都會經過優化;再次,對于int類型長度還不夠滿足你的要求的,你自己可以算一下內存大小4Byte * 2^31 = 2^23(kB) = 2^13(MB)=8(GB),這樣大的一個數組放在內存里面,你該考慮的不是你所說的問題,而是你的程序算法設計的問題了。
添加回答
舉報
0/150
提交
取消