我有一个多维数组,如下:
private static ArrayList [] [] pVTable = new ArrayList [35] [12];
我第一次尝试初始化它是:
for (ArrayList[] x : pVTable) {
for (ArrayList y : x) {
y = new ArrayList<TableValue>();
}
}
这不起作用。
我最终更多地手动完成,如下所示:
for ( int i = 0; i < pVTable.length; i++) {
for ( int j = 0; j < pVTable[0].length; j++) {
pVTable [i] [j] = new ArrayList<TableValue>();
}
}
效果很好。
虽然我有一个解决方案,但我想知道为什么第一段(更优雅的)代码不能完成相同的工作?
最佳答案
在第一个片段中,如果我们去掉 foreach
运算符的语法糖 (:
),代码将转换为:
for (int xIndex = 0; xIndex < pVTable.length; xIndex++) {
ArrayList[] x = pVTable[xIndex];
for (int yIndex = 0; yIndex < x.length; yIndex++) {
ArrayList y = x[yIndex];
y = new ArrayList<TableValue>();
}
}
如您所见,没有任何内容分配给实际数组 - 仅分配给临时 y
变量。
关于java - Java中初始化arraylist的三维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8298292/