在java中复制一个2d数组

在java中复制一个2d数组

我有一个名为矩阵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;}


繁星淼淼
浏览 530回答 3
3回答

呼啦一阵风

复制数组有两种好方法就是使用clone和System.arraycopy()。以下是如何使用克隆2D案例:int&nbsp;[][]&nbsp;myInt&nbsp;=&nbsp;new&nbsp;int[matrix.length][];for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;matrix.length;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;myInt[i]&nbsp;=&nbsp;matrix[i].clone();对于System.arraycopy(),您使用:int&nbsp;[][]&nbsp;myInt&nbsp;=&nbsp;new&nbsp;int[matrix.length][];for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;matrix.length;&nbsp;i++){ &nbsp;&nbsp;int[]&nbsp;aMatrix&nbsp;=&nbsp;matrix[i]; &nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;aLength&nbsp;=&nbsp;aMatrix.length; &nbsp;&nbsp;myInt[i]&nbsp;=&nbsp;new&nbsp;int[aLength]; &nbsp;&nbsp;System.arraycopy(aMatrix,&nbsp;0,&nbsp;myInt[i],&nbsp;0,&nbsp;aLength);}我没有基准,但我可以用2美分的赌注,他们比自己做的更快,更容易出错。特别是,System.arraycopy()因为它是在本机代码中实现的。希望这可以帮助。

慕仙森

可以使用Java 8中的流来复制2D数组。@Testpublic&nbsp;void&nbsp;testCopy2DArray()&nbsp;{ &nbsp;&nbsp;&nbsp;int[][]&nbsp;data&nbsp;=&nbsp;{{1,&nbsp;2},&nbsp;{3,&nbsp;4}}; &nbsp;&nbsp;&nbsp;int[][]&nbsp;dataCopy&nbsp;=&nbsp;Arrays.stream(data) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map((int[]&nbsp;row)&nbsp;->&nbsp;row.clone()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toArray((int&nbsp;length)&nbsp;->&nbsp;new&nbsp;int[length][]); &nbsp;&nbsp;&nbsp;assertNotSame(data,&nbsp;dataCopy); &nbsp;&nbsp;&nbsp;assertNotSame(data[0],&nbsp;dataCopy[0]); &nbsp;&nbsp;&nbsp;assertNotSame(data[1],&nbsp;dataCopy[1]); &nbsp;&nbsp;&nbsp;dataCopy[0][1]&nbsp;=&nbsp;5; &nbsp;&nbsp;&nbsp;assertEquals(2,&nbsp;data[0][1]); &nbsp;&nbsp;&nbsp;assertEquals(5,&nbsp;dataCopy[0][1]);}

DIEA

您没有初始化本地2D阵列。int[][]&nbsp;myInt&nbsp;=&nbsp;new&nbsp;int[matrix.length][];for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;matrix.length;&nbsp;i++){ &nbsp;&nbsp;myInt[i]&nbsp;=&nbsp;new&nbsp;int[matrix[i].length]; &nbsp;&nbsp;for&nbsp;(int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;<&nbsp;matrix[i].length;&nbsp;j++) &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;myInt[i][j]&nbsp;=&nbsp;matrix[i][j]; &nbsp;&nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java