我正在尝试在java中创建一个long数组,但是eclipse正在向我显示错误,如下所示:
以下是我的代码:
我该如何解决这个问题?
我不能在java中创建一个长大小的数组吗?
答案 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 则不会发生错误。