我有一个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数组更容易.谢谢您的帮助!
您的代码从第二行开始复制第一列(您的内部循环为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可能是直接复制内存的机器代码.
| 归档时间: |
|
| 查看次数: |
1849 次 |
| 最近记录: |