【发布时间】:2014-11-24 13:32:27
【问题描述】:
我需要创建一个 10^15 个位置的数组,根据位置的数量,我认为有必要创建一个长数组,但是数组的索引需要是 Int,我尝试使用 BigInteger但是它需要将 BigInteger 转换为 Int 并且这样做时它会变为负数,因此无法创建数组。
代码如下:
BigInteger num = new BigInteger("1000000000000000");
long[] array = new long[num.intValue()];
如果我打印 num.intValue() 它表明数字是 -1530494976
【问题讨论】:
-
那是位旋转。 num 已超过 int 的大小限制。您必须只使用 BigInt
-
我觉得你需要重新设计你正在制作的任何东西,如果你需要一个那么大的数组。如果你告诉我们更多关于你想要做什么的信息,也许我们可以建议一种不需要如此庞大的数组的方法。
-
你最好打电话给谷歌。我不确定其他人有这么多存储空间。
-
另外,请记住,将数组声明为
long[]仅意味着您将在其中存储长整数,而不是整数、字符串或任何其他类型/类。它不影响数组大小。 -
A
long是 64 位。 64*10^15 位是 7,11 PB,或 7275,96 TB。您拥有如此大量内存的可能性绝对为0。仅将数组设置为 0 就需要数年时间。
标签: java arrays biginteger