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