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

新手上路,请多包涵

我需要为我正在进行的项目制作一个相当大的二维数组的副本。我有两个二维数组:

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

我也有两种方法来进行复制。我需要复制数组,因为 current 会定期更新。

 public void old(){
  old=current
}

public void keepold(){
  current=old
}

但是,这不起作用。如果我调用 old,对 current 进行更新,然后调用 keepold,则 current 不等于原来的值。为什么会这样?

谢谢

原文由 badcoder 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 486
2 个回答

current=old or old=current makes the two array refer to the same thing, so if you subsequently modify current , old will be modified too.要将数组的内容复制到另一个数组,请使用 for 循环

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 循环

原文由 Louis Rhys 发布,翻译遵循 CC BY-SA 3.0 许可协议

从 Java 8 开始,使用流 API:

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

原文由 Gayan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题