Comment faire une copie profonde de Java ArrayList [dupliquer]
Doublon Possible:
comment cloner ArrayList et aussi cloner son contenu?
Essayer de faire une copie D'un ArrayList. L'objet sous-jacent est simple contenant des chaînes, des ints, des BigDecimals, des Dates et des objets DateTime. Comment puis-je m'assurer que les modifications apportées à la nouvelle ArrayList ne sont pas reflétées dans L'ancienne 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());
Santé, P
46
demandé sur
Community
2011-08-12 19:12:09
2 réponses
Cloner les objets avant de les ajouter. Par exemple, au lieu de newList.addAll(oldList);
for(Person p : oldList) {
newList.add(p.clone());
}
En Supposant que clone
est correctement redéfinies dansPerson
.
28
répondu
Serabe
2011-08-12 15:16:02
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;
}
}
Dans votre code d'exécution:
ArrayList<Person> clone = new ArrayList<Person>();
for(Person p : originalList)
clone.add(p.clone());
18
répondu
bdares
2011-08-12 15:17:52