簡體   English   中英

Java 2D陣列復制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM