2010-11-23 72 views
0

将两个阵列复制到新阵列中的最佳方式(优雅/高效)是什么?将新阵列复制到新阵列中

问候,

˚F

+0

你至少应该尝试发布提问.. – posdef 2010-11-23 10:14:22

+0

为什么下投票前搜索一下呢? stackoverflow回答必须处理编程的问题 – Tyzak 2010-11-23 10:54:44

回答

0

使用System.arraycopy需要底层硬件的优点在于尽可能有效地执行的阵列副本。

在问题的背景下,您需要拨打System.arraycopy两次;例如

int[] dest = new int[10]; 
int[] src1 = new int[5]; 
int[] src2 = new int[5]; 

// Populate source arrays with test data. 
for (int i=0; i<5; ++i) { 
    src1[i] = i; 
    src2[i] = i + 100; 
} 

System.arraycopy(src1, 0, dest, 0, src1.length); 
System.arraycopy(src2, 0, dest, src1.length, src2.length); 
5

我的名誉不允许我对亚当斯基的回答发表评论,但在这条线的错误:

System.arraycopy(src2, 0, dest, src1.length - 1, src2.length); 

随着src1.length - 1作为参数传递给destPos,则覆盖从SRC1阵列中复制的最后一个元素。在这种情况下,您将覆盖索引4上的元素,该索引是数组的第5个元素。

此代码可能会更容易理解:

int[] array1 = { 1, 2, 3 }; 
    int[] array2 = { 4, 5, 6, 7 }; 
    int[] array3 = new int[ array1.length + array2.length ]; 

    System.arraycopy(array1, 0, array3, 0, array1.length); 
    System.arraycopy(array2, 0, array3, array1.length, array2.length); 

    for (int i = 0; i < array3.length; i++) { 
     System.out.print(array3[i] + ", "); 
    }