一尘不染

在Java中复制2D数组

java

我有一个二维数组,称为int类型的矩阵,我想用一种方法将其复制到局部变量,以便我可以对其进行编辑

什么是复制阵列的最佳方法,我遇到了一些麻烦

例如

    int [][] myInt;
    for(int i = 0; i< matrix.length; i++){
        for (int j = 0; j < matrix[i].length; j++){
            myInt[i][j] = matrix[i][j];
        }
    }

    //do some stuff here
    return true;
}

阅读 347

收藏
2020-03-09

共1个答案

一尘不染

有两种复制数组的好方法是使用clone和System.arraycopy()

这是在2D情况下如何使用克隆的方法:

int [][] myInt = new int[matrix.length][];
for(int i = 0; i < matrix.length; i++)
    myInt[i] = matrix[i].clone();

对于System.arraycopy(),你可以使用:

int [][] myInt = new int[matrix.length][];
for(int i = 0; i < matrix.length; i++)
{
  int[] aMatrix = matrix[i];
  int   aLength = aMatrix.length;
  myInt[i] = new int[aLength];
  System.arraycopy(aMatrix, 0, myInt[i], 0, aLength);
}

我没有基准,但是我可以用我的2美分打赌,它们比你自己做的更快,更不容易出错。特别是,System.arraycopy()它是用本机代码实现的。

希望这可以帮助。

2020-03-09