将2个数组复制到一个新数组中

时间:2010-11-23 10:08:11

标签: java arrays

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

此致

˚F

3 个答案:

答案 0 :(得分:5)

我的声誉不允许我对Adamski的答案发表评论,但这一行有一个错误:

 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] + ", " );
    }

答案 1 :(得分:0)

使用System.arraycopy利用底层硬件尽可能高效地执行阵列复制。

在问题的上下文中,您需要拨打System.arraycopy两次; e.g。

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);

答案 2 :(得分:0)

您可以使用[System.arraycopy] [1],如图所示here

[1]:http://download.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#arraycopy(java.lang.Object,int,java.lang.Object,int,int)