Java 2D数组副本

Rya*_*les 0 java

我有一个2D数组,我只需要将第一行复制到另一个相同大小的数组中.这样做的最佳方式是什么?我试过这个:

public static int[][] buildCME(int[][] array){

    int [][] arrayCME = new int[array.length][array[0].length];


    for(int y = 1; y < array.length; y++)
    {

        for (int x = 0; x < 1; x++)
        {

            arrayCME[y][x] = array[y][x];

        }
    } 
Run Code Online (Sandbox Code Playgroud)

然而,这只是给我第一行的0,我假设与我的int初始化有关.我为循环创建了这个,因为我认为考虑比在正常for循环中创建if语句以考虑整个2D数组更容易.谢谢您的帮助!

cyo*_*yon 5

您的代码从第二行开始复制第一列(您的内部循环为x <1)(外部循环从1开始).如果要复制第一行呢

 for (int x = 0; x < array[0].length; x++)
 {
      arrayCME[0][x] = array[0][x];
 }
Run Code Online (Sandbox Code Playgroud)

为了更有效地执行此操作,您可能需要查看System.arraycopy:

System.arraycopy(array[0],0,arrayCME[0],0,array[0].length);
Run Code Online (Sandbox Code Playgroud)

System.arraycopy应该执行更高效的副本,因为它是本机方法.此外,一些JVM(例如HotSpot JVM)将此方法视为内在方法.JVM通常会使用特定于体系结构的代码替换对内在函数方法的调用,在这种情况下,arraycopy可能是直接复制内存的机器代码.