[JAVA]如何扩充静态数组array的长度

发布于 2022-08-26 23:04:05 字数 212 浏览 36 评论 3

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

×眷恋的温暖 2022-08-27 12:04:01

首先,针对你的问题给出答案:完全可以参考一下java.util.ArrayList的源码,自己包装一个不定长的一维数组,只不过这个抽象的一维数组里面是有多个一维数组构成,不过这种的方式的效率一般比多维数组低。

其次,对于你所说的

出于效率的需要现在我需要将多维数组压缩成一维数组存储

我持不同看法。首先,多维数组的内存存储也是连续的,访问效率跟一维数组相比,没你想的那么低,而且语言内置的多维数组寻址都会经过优化;再次,对于int类型长度还不够满足你的要求的,你自己可以算一下内存大小4Byte * 2^31 = 2^23(kB) = 2^13(MB)=8(GB),这样大的一个数组放在内存里面,你该考虑的不是你所说的问题,而是你的程序算法设计的问题了。

无声情话 2022-08-27 10:42:08

用 ArrayList把

猫性小仙女 2022-08-27 06:01:39

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文