2014-07-15 73 views
0

我想以小於N^2的時間複製一個數組。我現在只是使用雙循環...什麼是在Java中複製2D int數組的最快方法?

int[][] copy = new int[N][N]; 
for(int i = 0; i < N; i++){ 
    for(int j = 0; j < N; j++){ 
     copy[i][j] = original[i][j]; 
    } 
} 

有沒有更快的方法?

+0

你這樣做的方式,如果你刪除'original'數組,'copy'也是空的。你只是複製引用,而不是值。 –

+0

@HoNoSousa,不,我不這麼認爲。數組元素實際上正在被複制。 – Rahul

+0

爲什麼不看'Arrays.copyOf()'的源代碼並看看它是如何完成的?這可能是你將要得到的最好的。 – csmckelvey

回答

0

Java是JIT編譯的,和本地代碼編譯器可以做各種巧妙的事情,使簡單的循環走的快。所以,arraycopy的實現並不明顯。

所以@Brett Okken提供的答案不一定比你的要快。但要「確定」,你可以用他的方式。這是「最快」的。

System.arrayCopy(original[i], 0, copy[i], 0, N); 
相關問題