Kopieren/Klonen einer ArrayList in eine andere in Java

In diesem Tutorial sehen wir uns an, wie Sie alle Elemente aus einer ArrayList in eine andere ArrayList kopieren. Wir müssen die Methode clone() der übergeordneten Klasse Object, um unser Ziel zu erreichen.

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; 

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);
}
}
Laufzeit:

ArrayList: [Stift, Kit, Bleistift, Taschenrechner]
Cloned ArrayList: [Stift, Kit, Bleistift, Taschenrechner]
ArrayList Original: [Stift, Kit, Taschenrechner, Notizbuch]
Cloned 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.