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

62

我需要在我正在开发的项目中复制一个相当大的二维数组。我有两个二维数组:

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

我还有两种方法可以进行复制。我需要复制这个数组,因为当前它经常被更新。

public void old(){
  old=current
}

并且

public void keepold(){
  current=old
}

然而,这并不起作用。如果我调用old,对current进行更新,然后调用keepold,那么当前的值将不等于最初的值。为什么会这样呢?

谢谢。


1
当你发现需要复制多维数组时,你可能会发现是时候考虑创建一个新类来更好地管理这些数据了。 - corsiKa
你知道如何在Java中复制一维数组吗? - jmg
1
可以将问题声明为作业问题。但标签是用于分类的,而“作业”不是一个好的分类器,我个人认为。 - Louis Rhys
13个回答

0
current = old ;

赋值操作不会将一个数组的元素复制到另一个数组中。你只是让current矩阵引用old矩阵。你需要进行逐个成员的复制。


-2
public  static byte[][] arrayCopy(byte[][] arr){
    if(arr!=null){
        int[][] arrCopy = new int[arr.length][] ;
        System.arraycopy(arr, 0, arrCopy, 0, arr.length);
        return arrCopy;
    }else { return new int[][]{};}
}

-8
你可以尝试下面的代码:
public void multiArrayCopy(int[][] source,int[][] destination){
destination=source.clone();}

希望它能够运行。


7
不行,这样做不起作用。因为在multiArrayCopy之后,给本地变量destination赋值没有任何效果。 - jmg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接