错误是因为int[][][]
不一样Integer[][][]
。
int[][][]
是一个原始的 3D 数组 int
。
Integer[][][]
是object 的 3D 数组 Integer
,它是 的包装类int
。
嗯,从技术上讲,3D 数组是指向 2D 数组的指针数组,2D 数组是指向 1D 数组的指针数组,1D 数组是基元数组或指向对象的指针。
改为使用List<int[][][]> bandsList = new ArrayList<int[][][]>();
。
另请注意
bandsList.add(bands);
bandsList.add(bands);
只需将 2 个指针添加到同一个数组,更改一个也会更改另一个。
您需要手动复制它们:
int[][][] getCopy(int[][][] bands)
{
int[][][] newBands = new int[bands.length][][];
for (int i = 0; i < bands.length; i++)
{
newBands[i] = new int[bands[i].length];
for (int j = 0; j < bands[i].length; j++)
{
newBands[i][j] = new int[bands[i][j].length];
System.arraycopy(bands, 0, newBands, 0, bands[i][j].length))
}
}
return newBands;
}
// to add
bandsList.add(getCopy(bands));