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
提交
取消