Pnu*_*utz 50 java arraylist deep-copy
可能重复:
如何克隆ArrayList并克隆其内容?
试图制作一个ArrayList的副本.底层对象很简单,包含字符串,整数,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());
Run Code Online (Sandbox Code Playgroud)
干杯,P
Ser*_*abe 32
在添加对象之前克隆对象.例如,而不是newList.addAll(oldList);
for(Person p : oldList) {
newList.add(p.clone());
}
Run Code Online (Sandbox Code Playgroud)
假设clone正确覆盖了Person.
小智 20
public class Person{
String s;
Date d;
...
public Person clone(){
Person p = new Person();
p.s = this.s.clone();
p.d = this.d.clone();
...
return p;
}
}
Run Code Online (Sandbox Code Playgroud)
在执行代码中:
ArrayList<Person> clone = new ArrayList<Person>();
for(Person p : originalList)
clone.add(p.clone());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
134627 次 |
| 最近记录: |