Comment faire une copie profonde de Java ArrayList

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());