当前位置:  开发笔记 > 编程语言 > 正文

如何在Java中备份ArrayList?

如何解决《如何在Java中备份ArrayList?》经验,为你挑选了3个好方法。

我有一些数据存储为ArrayList.当我想备份这些数据时,java会永远绑定两个对象.这意味着当我更改数据中的值时,ArrayList此更改将进入备份.我试图将数据中的值分别复制到循环中的备份,尝试使用方法data.clone()- 没有任何帮助.



1> Paul Tomblin..:

你的问题不是很清楚.如果你克隆()一个ArrayList,如果你改变原始内容(即你添加或删除元素),克隆将不会被修改,但它是一个"浅拷贝",所以如果你改变原始的实际对象,他们将也可以在克隆中进行更改.

如果要进行"深层复制",以便对实际对象的更改不会影响它们在克隆中的备份,那么您需要创建一个新的ArrayList,然后通过原始对象和每个元素,克隆进入新的.如在

ArrayList backup = new ArrayList();
for (Object obj : data)
   backup.add(obj.clone());



2> activout.se..:

我认为你需要.clone()个别对象.克隆ArrayList不是"深层"; 它只会克隆对象的引用.



3> Paul Brinkle..:

我假设dataArrayList你要备份的名字.如果是这样,你应该知道它clone不是很深 - 它只创建一个调用它的对象的副本,在这种情况下是列表.如果它是深度克隆,它将用新的列表填充其中的对象的克隆.

由于它不深,如果更改列表包含的对象,则备份列表也会显示这些更改,因为它包含相同的对象.更改"当前"列表后,唯一一次看不到备份中的更改是在当前列表中添加或删除对象时.

有些类可以覆盖clone深层次,但不是全部.一般来说,这不是你可以依赖的东西.在创建Java集合的备份副本时,请记住要么克隆包含的对象,要么只处理不可变对象的集合.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有