[JAVA]如何扩充静态数组array的长度
java 默认的静态数组array长度是int类型
e.g.
int size = blah blah;
int[] array = new int[size];
出于效率的需要现在我需要将多维数组压缩成一维数组存储 而int类型的正数范围只有 0 ~ 2^31-1 也就是意味着我的array的大小只能到2^31
有没有可能扩展int到long呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
首先,针对你的问题给出答案:完全可以参考一下java.util.ArrayList的源码,自己包装一个不定长的一维数组,只不过这个抽象的一维数组里面是有多个一维数组构成,不过这种的方式的效率一般比多维数组低。
其次,对于你所说的
我持不同看法。首先,多维数组的内存存储也是连续的,访问效率跟一维数组相比,没你想的那么低,而且语言内置的多维数组寻址都会经过优化;再次,对于int类型长度还不够满足你的要求的,你自己可以算一下内存大小4Byte * 2^31 = 2^23(kB) = 2^13(MB)=8(GB),这样大的一个数组放在内存里面,你该考虑的不是你所说的问题,而是你的程序算法设计的问题了。
用 ArrayList把
如果说2^23都不够你用的话,建议你还是用多个数组,自己来管理不同的数组