我想以小于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