Eine Kopie, die sich nicht auf die Kopierquelle auswirkt, selbst wenn Sie ein Array oder eine Sammlung in Java kopieren und Änderungen am Kopierziel vornehmen, wird als Deep Copy bezeichnet.
Wenn Sie es im Internet nachschlagen, können Sie "int" oder "String" als Typargumente verwenden.
ArrayList myList = new ArrayList<MyObject>( srcList );
Es heißt, dass Sie eine tiefe Kopie erstellen können, indem Sie so etwas tun. Wenn das Objekt jedoch in der Liste gespeichert ist, handelt es sich nicht um eine tiefe Kopie! !!
Daher reicht es nicht aus, die Sammlung einfach als Argument und "neu" zu betrachten.
Zum tiefen Kopieren einer Sammlung von Objekten usw.
ArrayList<MyObject> myList = new ArrayList<MyObject>(srcList.size());
for (MyObject o : srcList) {
//Implementieren Sie eine der folgenden Möglichkeiten
o.add(new MyObject(new o)); //Konstruktor kopieren
o.add(o.clone()); //Implementierung der klonbaren Schnittstelle
}
Es scheint, dass Sie einen Kopierkonstruktor in dem Objekt vorbereiten müssen, das in die Sammlung aufgenommen werden soll, oder die "Klon" -Methode erben müssen. (Sie können beide Methoden verwenden)
Informationen zum Implementieren der klonbaren Schnittstelle: http://qiita.com/SUZUKI_Masaya/items/8da8c0038797f143f5d3
Deep Copy Object Collection Frage: http://stackoverflow.com/questions/715650/how-to-clone-arraylist-and-also-clone-its-contents
Recommended Posts