2012-04-12 7 views
1

Zum Beispiel, ich habe eine Arraylist:Java Arraylist: eine Kopie von Array erstellen und aus alten seperate verwenden, aber keine neuen Objekte

ArrayList<Animal> zoo = new ArrayList<Animal>(); 
// some code to add animals to zoo 

Ich möchte eine Kopie dieser old zoo-new zoo erstellen , und ich kann remove/add ... verwenden, um diesen neuen Zoo zu bearbeiten (und natürlich wird es sich nicht auf den alten Zoo auswirken). Also, ich habe einen Weg, dass: neue Zoos erstellen, die jedes Tier im alten Zoo klonen (es bedeutet Tierobjekte erstellen). Also, es ist auch LANGSAM.

Ich habe einen anderen Weg: Erstellen Sie eine Referenz der einzelnen Tiere des alten Zoos und kopieren Sie sie in den neuen Zoo. Also, neuer Zoo halt nur Bezug auf Tiere des Zoos. Also, jedes Mal, wenn ich entferne/hinzufüge, ... Es lösche nur Bezug auf Tierobjekte. Kein Einfluss auf den alten Zoo und KEINE ERSTELLUNG eines neuen Objekts.

Aber ich weiß nicht, wie man es in Java macht. Bitte unterrichte mich.

Thanks :)

Antwort

6

Das in Java ist sehr einfach:

ArrayList<Animal> copy = new ArrayList<Animal>(zoo); 

Der Konstruktor ArrayList<T>(Collection<? extends E> c) führt eine flache Kopie der Liste, die Sie als Parameter angeben, die gerade die Semantik ist, dass Sie sind auf der Suche nach.

+0

Oh. Danke :) Ich verstehe flache Kopie in Java, aber ich weiß nicht, dass dies auch flache Kopie ist. (Es ist so komisch mit mir, wenn man es bei Collections benutzt). – hqt

5

einfach versuchen:

ArrayList<Animal> newZoo = new ArrayList<Animal>(oldZoo); 
Verwandte Themen