一尘不染

如何制作Java ArrayList的深层副本

java

这个问题已经在这里有了答案

9年前关闭。

可能重复:
如何克隆ArrayList并克隆其内容?

试图复制一个ArrayList。基础对象很简单,包含Strings,ints,BigDecimals,Dates和DateTime对象。如何确保对新ArrayList所做的修改不会反映在旧ArrayList中?

Person morts = new Person("whateva");

List<Person> oldList = new ArrayList<Person>();
oldList.add(morts);
oldList.get(0).setName("Mortimer");

List<Person> newList = new ArrayList<Person>();
newList.addAll(oldList);

newList.get(0).setName("Rupert");

System.out.println("oldName : " + oldList.get(0).getName());
System.out.println("newName : " + newList.get(0).getName());

干杯,P


阅读 183

收藏
2020-09-08

共1个答案

一尘不染

在添加对象之前先对其进行克隆。例如,代替newList.addAll(oldList);

for(Person p : oldList) {
    newList.add(p.clone());
}

假设clone已正确覆盖Person

2020-09-08