在java中按值复制数组

时间:2010-03-03 13:25:49

标签: java

我试图制作一个数组的独立副本,但无法获得一个。看到我无法使用for循环将整数复制整数,因为效率原因。还有其他方法吗? 这是我的代码:

int[] temp = new int[arr.length]; 
temp = arr; 

5 个答案:

答案 0 :(得分:18)

查看System.arraycopy()方法。像,

int[] b = new int[a.length];
System.arraycopy(a, 0, b, 0, a.length);

答案 1 :(得分:13)

Arrays.copyOf()创建现有数组的新副本(可选择具有不同的长度)。

答案 2 :(得分:5)

尝试使用clone ()方法实现此目的。我记得这是唯一一个有效Java中的Josh Bloch建议使用克隆的情况。

int[] temp = arr.clone ();

但是arrayCopy要快得多。对3,000,000个元素的数组进行样本性能测试:

System.arrayCopy time: 8ms
     arr.clone() time: 29ms
 Arrays.copyOf() time: 49ms
 simple for-loop time: 75ms

答案 3 :(得分:4)

结帐System.arraycopy()。它可以复制任何类型的数组,是复制数组的首选(和优化)方法。

答案 4 :(得分:1)

您可以使用System.arraycopy,但我怀疑它会更有效率。无论如何都必须复制内存,因此唯一可能的优化是一次复制更大的内存块。但是,一次复制的内存块的大小受到处理器/系统架构的极大限制。