[英]Java 2D array copy
我有一個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];
}
}
但是,這只是給我第一行的0,我認為這與我的int初始化有關。 我創建此for循環是因為我認為,比在普通的for循環中創建if語句來說明整個2D數組要容易得多。 謝謝您的幫助!
您的代碼從第二行(外循環從1開始)復制第一列(您的內循環為x <1)。 如果要復制第一行,請執行
for (int x = 0; x < array[0].length; x++)
{
arrayCME[0][x] = array[0][x];
}
為了更有效地執行此操作,您可能需要看一下System.arraycopy
:
System.arraycopy(array[0],0,arrayCME[0],0,array[0].length);
System.arraycopy
是本機方法,因此應執行更有效的復制。 此外,某些JVM(例如HotSpot JVM)將這種方法視為內部方法。 JVM通常將使用特定於體系結構的代碼替換對內部方法的調用,在arraycopy
的情況下,JVM可能是直接復制內存的機器代碼。
這是因為您的外部循環從1開始,而不是0,並且隨着數組從0開始,第一行將始終保持不變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.