Duplication possible:
Comment cloner ArrayList et cloner son contenu?
essayant de faire une copie d’une ArrayList. L’object sous-jacent est simple et contient des objects Ssortingngs, ints, BigDecimals, Dates et DateTime. Comment puis-je m’assurer que les modifications apscopes à la nouvelle ArrayList ne sont pas reflétées dans l’ancienne ArrayList?
Person morts = new Person("whateva"); List oldList = new ArrayList(); oldList.add(morts); oldList.get(0).setName("Mortimer"); List newList = new ArrayList(); newList.addAll(oldList); newList.get(0).setName("Rupert"); System.out.println("oldName : " + oldList.get(0).getName()); System.out.println("newName : " + newList.get(0).getName());
Cheers, P
Cloner les objects avant de les append. Par exemple, au lieu de newList.addAll(oldList);
for(Person p : oldList) { newList.add(p.clone()); }
En supposant que le clone
est correctement remplacé dans Person
.
public class Person{ Ssortingng s; Date d; ... public Person clone(){ Person p = new Person(); ps = this.s.clone(); pd = this.d.clone(); ... return p; } }
Dans votre code d’exécution:
ArrayList clone = new ArrayList (); for(Person p : originalList) clone.add(p.clone());