Java 创建一个长数组

Java 创建一个长数组,java,arrays,Java,Arrays,我试图在java中创建一个long数组,但eclipse向我显示了一个错误,如下所示: 下面是我的代码: 我如何解决这个问题 我不能用java创建长数组吗?长数组很好:long[]。但是所有数组都是int索引的。所以只要在方法参数声明中将long n更改为int n,就可以全部设置。对于索引,必须使用int而不是longn(数组容量)必须是一个整数而不是长我很同情你。每次内存大小增加时,我们都会经历这个过程。人们有一种奇怪的期望,这个时间数组大小不需要与内存大小并行增加 最好的解决方案可能是使

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

下面是我的代码:

我如何解决这个问题


我不能用java创建长数组吗?

长数组很好:
long[]
。但是所有数组都是
int
索引的。
所以只要在方法参数声明中将
long n
更改为
int n
,就可以全部设置。

对于索引,必须使用
int
而不是
long
n
(数组容量)必须是一个
整数
而不是

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

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

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

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

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

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


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

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

不可以,但2^31-1个元素就足够了(2147483647)您需要多少内存才能存储超过该数量的数组元素?@Scott:您需要一个数组。java的一个缺点是列表和数组的索引是int而不是number,因此无法扩展。@MrSmith42:我需要一个包含10^9个元素的数组,您可以使用
Map
instead@SteveKuo你知道一个稠密的
映射将使用多少内存吗?如果我想创建一个包含10^9索引的数组,那么我该如何创建它?你不能,由于数组是整数索引的。为什么需要在单个数组中存储这么多
long
s?你想实现什么?如果我可以在其他地方存储这么大的值,还有其他方法吗?即使可以,一个索引为10^9的长数组也需要大约8GB的内存…@ErikNedwidek:我在这里返回最后一个元素。。非数组