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

标签 java arrays memory

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

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

但这修改了我的原始数组(城市)。有谁知道如何复制而不让另一个指针指向同一对象

最佳答案

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

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

关于java - 如何在java中复制(内存)数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15370474/

相关文章:

java - 不允许启动服务 Intent - Android Oreo

c++ - T D[N] 是否总是声明数组类型的对象?

javascript - 在数组中保存类+拼接删除错误的对象

java - 将目录和文件从 res/raw 文件夹复制到 SD 卡 - android

java - 带 Wicket 的正则表达式 mountPage

java - inputStream.read 无法正常工作

arrays - 如何找到数组中最长的字符串?

c++指针的内存分配过程

c++ - 读取eax寄存器

java - 如何将 ObjectGraphMeasurer.measure(object) 的结果转换为字节?