猿问

有没有一种可能扩展int到long呢?

java 默认的静态数组array长度是int类型

e.g.
int size = blah blah;
int[] array = new int[size];

出于效率的需要现在我需要将多维数组压缩成一维数组存储 而int类型的正数范围只有 0 ~ 2^31-1 也就是意味着我的array的大小只能到2^31


莫回无
浏览 88回答 2
2回答

jeck猫

如果说2^23都不够你用的话,建议你还是用多个数组,自己来管理不同的数组

ITMISS

首先,针对你的问题给出答案:完全可以参考一下java.util.ArrayList的源码,自己包装一个不定长的一维数组,只不过这个抽象的一维数组里面是有多个一维数组构成,不过这种的方式的效率一般比多维数组低。其次,对于你所说的出于效率的需要现在我需要将多维数组压缩成一维数组存储我持不同看法。首先,多维数组的内存存储也是连续的,访问效率跟一维数组相比,没你想的那么低,而且语言内置的多维数组寻址都会经过优化;再次,对于int类型长度还不够满足你的要求的,你自己可以算一下内存大小4Byte * 2^31 = 2^23(kB) = 2^13(MB)=8(GB),这样大的一个数组放在内存里面,你该考虑的不是你所说的问题,而是你的程序算法设计的问题了。
随时随地看视频慕课网APP

相关分类

Java
我要回答