21

我正在尝试在 java 中创建一个 long 数组,但是 eclipse 向我显示了一个错误,如下所示:

下面是我的代码:

在此处输入图像描述

我该如何解决这个问题?

我不能在java中创建一个长数组吗?

4

6 回答 6

26

长数组很好:long[]. 但是所有 数组都是int索引的。所以只需在方法参数声明中更改long n为,就可以了。int n

于 2013-01-28T21:29:00.453 回答
1

对于索引,您必须使用int但不是long

于 2013-01-28T21:29:56.277 回答
1

我需要一个 10^9 元素的数组

int您可以使用一个值创建一个十亿的数组。n创建一个 int,然后您可以使用注意创建一个数组:这将new long[n] 使用 8 GB 的堆。

由于您正在使用公式构建所有元素,因此您应该能够动态地给出所有值。即创建一个组件,它是一个“虚拟”数组,这样您就不必生成所有数组。

我指出这一点的原因是,如果第二个循环k非常小,则最多可能需要几分钟,或者很容易需要几天。

顺便说一句:我看不到所有代码,但看起来你永远不需要超过k+1可以分配一次而不是n-k多次的值。

于 2013-01-28T22:08:23.310 回答
0

n(数组容量)必须integer是非long

于 2013-01-28T21:31:32.203 回答
0

你有我的同情。每次内存大小增加时,我们都会经历这个。有一个奇怪的期望,这次数组大小不需要与内存大小并行增加。

long get(long index)您最好的解决方案可能是使用和void set(long value, long index)方法编写自己的类。它可以将数据表示为 long[10][1000000000],并封装自然 long 索引和实际 int 索引对之间的映射。

于 2013-01-28T21:43:57.067 回答
0

请注意,数组大小始终等于 int 大小。如果您指定的数组大小超过 2147483647,您将收到错误消息。长 n; 长 []=新长 [n]; 这将产生错误,因为 long n 超过 2147483647。如果 int n 则不会发生错误。

于 2021-01-31T15:05:08.627 回答