如何在Java中复制二维数组?

2022-08-31 17:26:06

我需要为我正在处理的项目制作一个相当大的2维数组的副本。我有两个2D数组:

int[][]current;
int[][]old;

我还有两种方法来复制。我需要复制阵列,因为当前会定期更新。

public void old(){
  old=current
}

public void keepold(){
  current=old
}

但是,这不起作用。如果我调用old,更新当前,然后调用keepold,当前不等于它原来的样子。为什么会这样?

谢谢


答案 1

从 Java 8 开始,使用流 API:

int[][] copy = Arrays.stream(matrix).map(int[]::clone).toArray(int[][]::new);

答案 2

current=old或者使两个数组引用同一个东西,所以如果你随后修改,也会被修改。要将一个数组的内容复制到另一个数组,请使用 for 循环old=currentcurrentold

for(int i=0; i<old.length; i++)
  for(int j=0; j<old[i].length; j++)
    old[i][j]=current[i][j];

PS:对于一维数组,您可以使用 Arrays.copyOf 避免创建自己的 for 循环