23 Stimmen

ArrayList seicht kopieren iterieren oder klonen()

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?

61voto

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

14voto

Bozho Punkte 570413

Utilice clone() oder verwenden Sie den Kopier-Konstruktor.

Der Copy-Konstruktor führt eine zusätzliche Umwandlung der übergebenen Sammlung in ein Array durch, während der clone() Methode verwendet direkt das interne Array.

Beachten Sie, dass clone() gibt zurück. Object Sie müssen also nach List .

9voto

Michael Borgwardt Punkte 334642

Anstatt manuell zu iterieren, können Sie die Kopierkonstruktor .

Was den Geschwindigkeitsunterschied zwischen dieser Methode und der Verwendung von clone() :

  1. Es spielt keine Rolle
  2. Höchstwahrscheinlich gibt es keine
  3. Führen Sie einen Benchmark für Ihre spezifische Systemkonfiguration und Ihren Anwendungsfall durch

-3voto

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X