在找出clone()不能按预期用于多维数组的困难方式之后,现在我写了
for(int k = 0; k < Nz; k++){
for(int j = 0; j < Ny; j++){
for(int i = 0; i < Nx; i++){
grid_copy[i][j][k] = grid[i][j][k];
}
}
}
表示每个数组。这感觉压低了低水平和抗干燥。任何人都可以提出更通用的方法吗?
答案 0 :(得分:2)
这个official tutorial解释了如何使用arraycopy
方法将数据从一个数组有效地复制到另一个数组中。我认为它仅适用于一维数组,但您可以使用它来复制三维网格中包含的各种“一维数组块”。你可能会发现它很有用!
答案 1 :(得分:2)
如果你真的想要一台仿制复印机,我只是在这里掀起了这个并做了一些基本测试。这很有趣,但我认为它没有任何好处,因为你在灵活性方面获得的东西在可读性上会失去。
private void copy(Object source, Object dest) {
if(source.getClass().isArray() && dest.getClass().isArray()) {
for(int i=0;i<Array.getLength(source); i++) {
if(Array.get(source, i) != null && Array.get(source, i).getClass().isArray()) {
copy(Array.get(source, i), Array.get(dest, i));
} else {
Array.set(dest, i, Array.get(source, i));
}
}
}
}
答案 2 :(得分:0)
我不知道更常见的做法。我只想定义一个函数来完成它。
public void copyMultidimensionalArray(int[][][] destination,int[][][] source)
{
// your above code here
}
然后我只是每次都调用该函数。
copyMultidimensionalArray(grid_copy,grid);
不能比那更优雅,我可以吗?
请注意,上面的示例仅使用整数数组。您当然可以使用Object类型的数组使其更通用。