将2个数组复制到一个新数组中[重复]

Posted

技术标签:

【中文标题】将2个数组复制到一个新数组中[重复]【英文标题】:Copy 2 array in a new one [duplicate] 【发布时间】:2011-05-14 09:10:35 【问题描述】:

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

问候,

F

【问题讨论】:

您至少应该在发布问题之前尝试搜索一下.. 为什么要投反对票? *** 回答了与编程有关的问题 【参考方案1】:

我的名声不允许我评论 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] + ", " );
    

【讨论】:

注意 - 我已经修改了我的答案。【参考方案2】:

您可以使用 [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)

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于将2个数组复制到一个新数组中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java。如何将一个LinkedList里的元素全部复制到另一LinkedList容器里?

JAVA,用List做,两个数组中数的合并和去除相同元素

将 n 位从 8 位数组复制到 64 位整数?

Java数组去重复问题

C:试图将指针值复制到另一个指针中,得到可修改的左值错误

写一个方法,将一个整形数组中的偶数复制到另一个数组中,用java写。