我正在尝试在 java 中创建一个 long 数组,但是 eclipse 向我显示了一个错误,如下所示:
下面是我的代码:
我该如何解决这个问题?
我不能在java中创建一个长数组吗?
长数组很好:long[]
. 但是所有 数组都是int
索引的。所以只需在方法参数声明中更改long n
为,就可以了。int n
对于索引,您必须使用int
但不是long
我需要一个 10^9 元素的数组
int
您可以使用一个值创建一个十亿的数组。n
创建一个 int,然后您可以使用注意创建一个数组:这将new long[n]
使用 8 GB 的堆。
由于您正在使用公式构建所有元素,因此您应该能够动态地给出所有值。即创建一个组件,它是一个“虚拟”数组,这样您就不必生成所有数组。
我指出这一点的原因是,如果第二个循环k
非常小,则最多可能需要几分钟,或者很容易需要几天。
顺便说一句:我看不到所有代码,但看起来你永远不需要超过k+1
可以分配一次而不是n-k
多次的值。
n
(数组容量)必须integer
是非long
你有我的同情。每次内存大小增加时,我们都会经历这个。有一个奇怪的期望,这次数组大小不需要与内存大小并行增加。
long get(long index)
您最好的解决方案可能是使用和void set(long value, long index)
方法编写自己的类。它可以将数据表示为 long[10][1000000000],并封装自然 long 索引和实际 int 索引对之间的映射。
请注意,数组大小始终等于 int 大小。如果您指定的数组大小超过 2147483647,您将收到错误消息。长 n; 长 []=新长 [n]; 这将产生错误,因为 long n 超过 2147483647。如果 int n 则不会发生错误。