Processing 处理中两个二维阵列之间的深度复制

Processing 处理中两个二维阵列之间的深度复制,processing,multidimensional-array,deep-copy,Processing,Multidimensional Array,Deep Copy,对于我正在进行的一个项目,我有两个由2D阵列组成的网格,其中一个允许用户在其中绘制图像,另一个显示提交的最后一个图像。然而,我的代码是浅拷贝而不是深拷贝,我需要找到一种在处理过程中进行深拷贝的方法。下面是我的浅拷贝代码的一个片段: for (int i = 0; i < cols; i++) { for (int j = 0; j < rows; j++) { mainGrid[i][j] = userGrid[i][j]; } } for(i

对于我正在进行的一个项目,我有两个由2D阵列组成的网格,其中一个允许用户在其中绘制图像,另一个显示提交的最后一个图像。然而,我的代码是浅拷贝而不是深拷贝,我需要找到一种在处理过程中进行深拷贝的方法。下面是我的浅拷贝代码的一个片段:

   for (int i = 0; i < cols; i++) {
     for (int j = 0; j < rows; j++) {
     mainGrid[i][j] = userGrid[i][j];
    }
  }
for(int i=0;i

在处理过程中,最简单的方法是什么?我一直在广泛地搜索将userGrid的所有内容深度复制到主网格中的最简单方法,例如使用Java深度复制库,但我不太确定如何使用该库的工具将2D数组复制到另一个数组中。

我看到的最简单的选项是使用灵活且专为此而设计的。 下面是一个快速演示:

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;
}
intnx=5;
int ny=5;
int[][]主网格;
int[][]用户网格;
无效设置(){
//初始化
主栅格=新整数[nx][ny];
userGrid=newint[nx][ny];
//填充虚拟数据以进行测试
对于(int y=0;y
我不相信
arrayCopy()
会创建深度拷贝。来自:“此函数仅复制引用,这意味着在大多数情况下,它仅复制一维数组(一组括号)。如果与二维(或三维或更多)数组一起使用,它将仅复制第一级的引用,因为二维数组只是一个“数组数组”