我想以小於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];
}
}
有沒有更快的方法?
我想以小於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];
}
}
有沒有更快的方法?
int[][] copy = new int[N][N];
for(int i = 0; i < N; i++){
System.arrayCopy(original[i], 0, copy[i], 0, N);
}
Java是JIT編譯的,和本地代碼編譯器可以做各種巧妙的事情,使簡單的循環走的快。所以,arraycopy的實現並不明顯。
所以@Brett Okken提供的答案不一定比你的要快。但要「確定」,你可以用他的方式。這是「最快」的。
System.arrayCopy(original[i], 0, copy[i], 0, N);
你這樣做的方式,如果你刪除'original'數組,'copy'也是空的。你只是複製引用,而不是值。 –
@HoNoSousa,不,我不這麼認爲。數組元素實際上正在被複制。 – Rahul
爲什麼不看'Arrays.copyOf()'的源代碼並看看它是如何完成的?這可能是你將要得到的最好的。 – csmckelvey