2014-07-15 46 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); 
相关问题