最簡單的選項我看到使用arrayCopy()這是靈活的,併爲此設計。 這裏有一個快速演示:
int nx = 5;
int ny = 5;
int[][] mainGrid;
int[][] userGrid;
void setup(){
//init
mainGrid = new int[nx][ny];
userGrid = new int[nx][ny];
//populate with dummy data to test
for(int y = 0 ; y < ny; y++){
for(int x = 0; x < nx; x++){
userGrid[x][y] = round(random(nx)+random(ny));
}
}
println("userGrid:\n"+print2DArray(userGrid,nx,ny,true));
arrayCopy(userGrid,mainGrid);//copy userGrid into mainGrid
println("mainGrid:\n"+print2DArray(mainGrid,nx,ny,true));
}
//utility to pretty print 2D arrays
String print2DArray(int[][] arr,int sx,int sy,boolean printIds){
String out = "";
for(int i = 0 ; i < sx*sy; i++){
int x = i/sx;
int y = i%sx;
boolean isLastOnLine = i%sx == sx-1;
out += (printIds ? "["+x+"]"+"["+y+"]:" : "")+arr[x][y]+(isLastOnLine ? "":",");
if(isLastOnLine) out += "\n";
}
return out;
}
我不相信'arrayCopy()''創建一個深層副本。從[docs](http://www.processing.org/reference/arrayCopy_.html): 「此函數只複製引用,這意味着對於大多數目的它只複製一維數組(一組括號)如果與兩個(或三個或更多)維數組一起使用,它將只複製第一級的引用,因爲二維數組只是一個「數組數組」。 –