将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个数组复制到一个新数组中[重复]的主要内容,如果未能解决你的问题,请参考以下文章