如何在java中复制(内存)数组?

时间:2013-03-12 19:31:57

标签: java arrays memory

嗨我想要复制一个数组...而且我不想使用复制速度慢的“克隆”。 我尝试了arraycopy和copyOf,但它无法正常工作

for (int i = 0; i < arraySize; i++) {
            City[] tempCities = Arrays.copyOf(cities, cities.length) ;
            distance = 0;
            tempCities[i].setVisited();
}

但这会修改​​我的原始数组(城市)。有没有人知道如何复制,没有另一个指向同一个对象的指针

1 个答案:

答案 0 :(得分:2)

真正的问题是您将引用存储在数组中。如果希望新数组中的对象独立于原始数组中的对象,则必须进行深层复制。为此,cities[i].clone()是您的朋友。

至于您的性能问题,很可能是因为您在循环的每次迭代期间复制数组。这非常浪费;一份就足够了。