Object clone(): Diese Methode gibt eine Kopie der ArrayList.
Klonen bedeutet nicht, dass sowohl die ursprüngliche als auch die geklonte Liste auf dieselbe Speicherbox verweisen. Dies geschieht nur mit Liste b = a; . Wenn Sie ein Element in der ersten Liste ändern, wird es auch in der zweiten Liste geändert.
Beim Klonen wird eine neue Instanz erstellt, die dieselben Elemente verwaltet. Das bedeutet, dass Sie zwei verschiedene Listen haben, deren Inhalt jedoch identisch ist. Wenn Sie ein Element in der ersten Liste ändern, ändert es sich nicht in der zweiten Liste.
In diesem Beispiel haben wir eine ArrayList vom Typ String und klonen sie mit der Methode clone(). Der interessante Punkt hier ist, wann nach dem Klon Elemente zur ursprünglichen Liste hinzugefügt und entfernt werden sollen.
import java.util.ArrayList;Laufzeit:
public class ArrayList_clone {
public static void main(String[] args) {
ArrayList< String> al = new ArrayList< String> ();
//Elemente zu ArrayList hinzufügen
al.add("Pen");
al.add("Kit");
al.add("Bleistift");
al.add("Taschenrechner");
System.out.println("ArrayList: "+al);
ArrayList< String> al2 = (ArrayListe< Saite>) al.clone();
System.out.println("Geklonte ArrayListe: "+ al2);
//Elemente aus der ursprünglichen Liste hinzufügen und entfernen
al.add("Notebook");
al.remove("Bleistift");
//Beide Listen nach dem Hinzufügen und Löschen anzeigen
System.out.println("Original ArrayList: "+al);
System.out.println("Geklonte ArrayListe: "+al2);
}
}
ArrayList: [Stift, Kit, Bleistift, Taschenrechner]Sie sollten jedoch in Betracht ziehen, die Methode clone() nicht zu verwenden. Es funktioniert sehr gut mit Sammlungen, aber im Allgemeinen ist es besser, den Builder neue ArrayList.
Cloned ArrayList: [Stift, Kit, Bleistift, Taschenrechner]
ArrayList Original: [Stift, Kit, Taschenrechner, Notizbuch]
Cloned ArrayList: [Stift, Kit, Bleistift, Taschenrechner]
Commentaires (12)
Connectez-vous pour commenter
Rejoignez la discussion et partagez vos connaissances avec la communauté
Excellent tutoriel !
N'hésitez pas si vous avez des questions.