制作动态多维数组是否可能(我相信它是)并且不太复杂,如果需要,它会增加维度?
// Array[] 1 has 2 dimensions
if(blah=blah)
{
Array[] 1 gets second dimension and is now Array[][]
}
制作动态多维数组是否可能(我相信它是)并且不太复杂,如果需要,它会增加维度?
// Array[] 1 has 2 dimensions
if(blah=blah)
{
Array[] 1 gets second dimension and is now Array[][]
}
不,这是不可能的:数组的维数是数组类型的属性,而不是数组对象的属性,所以你不能用内置的 Java 数组来做到这一点。
为了模拟可以在运行时更改维数的数组,您需要构建自己的类。您可以将该类基于数组或ArrayList
,但会有一个限制:您将无法在模拟数组上使用下标运算符。
还有一个“丑陋”的解决方案:您可以在没有类型的情况下存储数组 - 本质上,作为无类型的Object
. 您可以将具有任意维数的数组分配给 type 的变量Object
,如下所示:
Object a = new int[10];
a = new int[10][2];
a = new int[10][2][5];
问题是如果不执行强制转换,您将无法访问此类数组的元素:
a[2][1][0] = 7; // Will not compile
这将编译并工作,但构造相当不可读:
((int[][][])a)[2][1][0] = 7;
另请注意,数组的先前内容将在重新分配时丢失,除非您对其进行复制。