Java 将n维数组指定给对象

Java 将n维数组指定给对象,java,arrays,biginteger,Java,Arrays,Biginteger,我已经用Java编写了代码来查找JVM能够支持的最大的大整数数组 它首先添加并创建一个BigInteger[],然后用更大的大小重新声明它。一旦大小等于Integer.MAX_值,它就开始创建一个BigInteger[Integer.MAX_值][],并开始增加第二个维度。一旦抛出OutOfMemory异常,它将停止,并返回成功初始化的最后一个数组 不幸的是,基于计算机的RAM,它可能是一个BigInteger[],BigInteger[],一直到一个BigInteger[]。如何将其分配给私有

我已经用Java编写了代码来查找JVM能够支持的最大的大整数数组

它首先添加并创建一个BigInteger[],然后用更大的大小重新声明它。一旦大小等于Integer.MAX_值,它就开始创建一个BigInteger[Integer.MAX_值][],并开始增加第二个维度。一旦抛出OutOfMemory异常,它将停止,并返回成功初始化的最后一个数组

不幸的是,基于计算机的RAM,它可能是一个BigInteger[],BigInteger[],一直到一个BigInteger[]。如何将其分配给私有对象?大堆在我的课堂上,这样我以后可以参考它

例如:

    BigInteger[] x;
    x = new BigInteger[][] //error, dims dont match.

我同意这个问题需要澄清,但为了回答您的问题,Java中的所有对象都继承自
Object
类,因此
Object
类型的变量可以引用任何内容

Object obj = new BigInteger[1];
Object obj = new BigInteger[1][1];
Object obj = new BigInteger[1][1][1];
.
.
.

因为您要求无限的限制,我建议使用
LinkedList
。或者,您可以使用
LinkedList

如果您试图计算可以在内存中创建/保存多少个参考值,那么
biginger
实际上不会进入图片<从数组本身的角度来看,code>Object[10]
将与
biginger[10]
的大小完全相同;它是一个可以容纳10个参考值的数组。参考值是一个固定的大小,就像C中的指针一样;您只需创建一个
LinkedList
,然后开始用
null
填充它—当内存用完时,您可以创建多少个。当然,列表中的每个节点都有开销。在这种情况下,我最初的答案可能会更好


如果您试图计算可以创建多少个
biginger
实例。。。同样,只需创建一个
LinkedList
,并对其进行测试

我不确定,但我认为这与电脑没有多大关系。支持多维数组的任务不是这样的。@eylashiv当每个BigInteger包含一个int[]时,情况就是这样,int[]的所有内存都已分配。此外,我的try-catch语句经常抛出内存不足错误。。。思考。旁注:类型
biginger
与您的实验无关。您还可以使用
对象
数组。所有对象引用都具有相同的大小,而不管类型如何。此实验的结果将仅指示已分配给JVM的堆空间量。它不会告诉你任何关于硬件的事情。