创建一个长数组

时间:2013-01-28 21:27:36

标签: java arrays

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

以下是我的代码:

enter image description here

我该如何解决这个问题?

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

6 个答案:

答案 0 :(得分:22)

多头阵列很好:long[]。但所有 数组都是int - 已编入索引。因此,只需在方法参数声明中将long n更改为int n,即可一切都准备好了。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

  

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

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

由于您使用公式构建所有元素,因此您应该能够动态地提供所有值。即创建一个“虚拟”数组的组件,这将节省您必须生成所有数组的数组。

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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