【问题标题】:How to copy(memory) array in java?如何在java中复制(内存)数组?
【发布时间】:2013-02-28 12:17:05
【问题描述】:

嗨,我想复制一个数组……我不想使用复制速度慢的“克隆”…… 我尝试了arraycopy和copyOf,但它不起作用

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

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

【问题讨论】:

  • 为什么要在循环的每次迭代中复制数组?另外,定义“不工作”。
  • 也就是说你想要一个深拷贝?
  • 是我的城市的副本...我正在使用 TSP 问题

标签: java arrays memory


【解决方案1】:

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

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

【讨论】:

  • 数组城市是城市的一种类型(坐标x,坐标y,访问的布尔值)问题是布尔值没有改变... City[] tempCities = Arrays.copyOf(cities, urbans 。长度);当我改变 tempCities 的属性时,它甚至改变了城市的属性。 es: tempCities[i].setVisited();这改变了城市[i] 作为访问,这是我不想要的......我也尝试过克隆......但没有用,我不能使用 close 因为它很慢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 2011-10-03
  • 1970-01-01
  • 2011-08-02
  • 2012-08-21
相关资源
最近更新 更多