Une copie qui n'affecte pas la source de la copie même si vous copiez un tableau ou une collection en Java et apportez des modifications à la destination de la copie est appelée une copie complète.
Si vous le recherchez sur le net, vous pouvez utiliser ʻintou
String` comme arguments de type.
ArrayList myList = new ArrayList<MyObject>( srcList );
Cela dit que vous pouvez faire une copie complète en faisant quelque chose comme ça, mais en fait, si l'objet est stocké dans la liste, ce ne sera pas une copie profonde! !!
Par conséquent, il ne suffit pas de simplement prendre la collection comme argument et «nouveau».
Pour copier en profondeur une collection d'objets, etc.
ArrayList<MyObject> myList = new ArrayList<MyObject>(srcList.size());
for (MyObject o : srcList) {
//Mettez en œuvre l'un des éléments suivants
o.add(new MyObject(new o)); //Copier le constructeur
o.add(o.clone()); //Implémentation d'interface clonable
}
Il semble que vous deviez préparer un constructeur de copie dans l'objet à mettre dans la collection, ou hériter de la méthode clone
.
(Vous pouvez utiliser l'une ou l'autre méthode)
À propos de l'implémentation de l'interface clonable: http://qiita.com/SUZUKI_Masaya/items/8da8c0038797f143f5d3
Question concernant la collecte d'objets Deep Copy: http://stackoverflow.com/questions/715650/how-to-clone-arraylist-and-also-clone-its-contents
Recommended Posts