我试图创建一个独立的数组副本,但无法成功。我不能使用for循环逐个整数复制,因为效率原因。是否有其他方法? 这是我的代码:
int[] temp = new int[arr.length];
temp = arr;
我试图创建一个独立的数组副本,但无法成功。我不能使用for循环逐个整数复制,因为效率原因。是否有其他方法? 这是我的代码:
int[] temp = new int[arr.length];
temp = arr;
看看 System.arraycopy()
方法。就像这样,
int[] b = new int[a.length];
System.arraycopy(a, 0, b, 0, a.length);
Arrays.copyOf()
可以创建一个已存在数组的副本(可选择使用不同的长度)。
clone()
方法来实现此目的。据我记得,这是唯一一种Josh Bloch在《Effective Java》中推荐使用克隆的情况。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
你可以使用System.arraycopy,但我怀疑它不会更有效率。无论如何,内存都必须被复制,所以唯一可能的优化是一次性复制更大的内存块。但一次复制的内存块大小受处理器/系统架构的严格限制。