我试图制作一个数组的独立副本,但无法获得一个。看到我无法使用for循环将整数复制整数,因为效率原因。还有其他方法吗? 这是我的代码:
int[] temp = new int[arr.length];
temp = arr;
答案 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,但我怀疑它会更有效率。无论如何都必须复制内存,因此唯一可能的优化是一次复制更大的内存块。但是,一次复制的内存块的大小受到处理器/系统架构的极大限制。