Ich benötige eine flache Kopie eines java ArrayList
sollte ich verwenden clone()
oder iterieren über ursprüngliche Liste und kopieren Elemente in neue arrayList, was schneller ist?
Antworten
Zu viele Anzeigen?
Bart Kiers
Punkte
160101
Eine Iteration ist nicht erforderlich:
List original = ...
List shallowCopy = new ArrayList(original);
http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html#ArrayList%28java.util.Collection%29
Michael Borgwardt
Punkte
334642
Anstatt manuell zu iterieren, können Sie die Kopierkonstruktor .
Was den Geschwindigkeitsunterschied zwischen dieser Methode und der Verwendung von clone()
:
- Es spielt keine Rolle
- Höchstwahrscheinlich gibt es keine
- Führen Sie einen Benchmark für Ihre spezifische Systemkonfiguration und Ihren Anwendungsfall durch
Gaurav Kaushik
Punkte
77
Die Frage sagt shallowcopy nicht deepcopy.copying direkt Verweis von einem Arraylist Verweis auf eine andere wird auch funktionieren right.Deep copy umfasst kopieren einzelne Element in Arraylist.
ArrayList<Integer> list=new ArrayList<Integer>();
list.add(3);
ArrayList<Integer> list1=list; //shallow copy...
Gibt es dabei irgendwelche Probleme?