Sem*_*iev 0 java arraylist dimensions multidimensional-array
是否有可能(我确定它是)并且不太复杂,无法制作动态多维数组,如果需要可以增加维数?
// Array[] 1 has 2 dimensions
if(blah=blah)
{
Array[] 1 gets second dimension and is now Array[][]
}
Run Code Online (Sandbox Code Playgroud)
不,这是不可能的:尺寸OFN数组数为数组的的属性类型,而不是数组的对象,所以你不能做到这一点内置的Java数组.
为了模拟可以在运行时更改维数的数组,您需要构建自己的类.您可以将该类基于数组或a ArrayList
,但是会有一个限制:您将无法在模拟数组上使用下标运算符.
还有"丑陋"的解决方案:你可以在没有类型的情况下存储你的数组 - 基本上,作为无类型Object
.您可以将具有任意维数的数组分配给类型变量Object
,如下所示:
Object a = new int[10];
a = new int[10][2];
a = new int[10][2][5];
Run Code Online (Sandbox Code Playgroud)
问题是,如果不执行强制转换,则无法访问此类数组的元素:
a[2][1][0] = 7; // Will not compile
Run Code Online (Sandbox Code Playgroud)
这将编译和工作,但构造是相当难以理解的:
((int[][][])a)[2][1][0] = 7;
Run Code Online (Sandbox Code Playgroud)
另请注意,除非您复制数组,否则数组的先前内容将在重新分配时丢失.
归档时间: |
|
查看次数: |
112 次 |
最近记录: |