Копирование/клонирование одного ArrayList в другой в Java

В этом руководстве мы рассмотрим, как скопировать все элементы из одного ArrayList в другой ArrayList. Мы должны использовать метод clone() родительского класса Object для достижения нашей цели.

Object clone(): Этот метод возвращает копию ArrayList.

Клонирование не означает, что и исходный, и клонированный списки указывают на одну и ту же ячейку памяти. Это делается с помощью Список b = a; . Если вы измените элемент в первом списке, он также будет изменен во втором списке.

Клонирование создает новый экземпляр, который поддерживает те же элементы. Это означает, что у вас есть два разных списка, но их содержимое одинаково. Если вы измените элемент в первом списке, он не изменится во втором списке.

В этом примере у нас есть ArrayList типа String и мы клонируем его с помощью метода  clone().  Интересным моментом здесь является то, когда добавлять и удалять элементы в исходный список после clone.

import java.util.ArrayList; 

public class ArrayList_clone {

public static void main(String[] args) {
ArrayList< Строка> al = новый ArrayList< Строка> ();

//добавляем элементы в ArrayList
al.add("Pen");
al.add("Kit");
al.add("Карандаш");
al.add("Калькулятор");
System.out.println("ArrayList: "+al);

ArrayList< Строка> al2 = (СписокМассивов< Строка>) al.clone();
System.out.println("Клонированный ArrayList: "+ al2);

//добавляем и удаляем элементы из исходного списка
al.add("Notebook");
al.remove("Карандаш");

//Показать оба списка после добавления и удаления
System.out.println("Original ArrayList: "+al);
System.out.println("Клонированный ArrayList: "+al2);
}
}
Runtime:

ArrayList: [Ручка, Набор, Карандаш, Калькулятор]
Cloned ArrayList: [Ручка, Набор, Карандаш, Калькулятор]
ArrayList Оригинал: [Ручка, Набор, Калькулятор, Блокнот]
Cloned ArrayList: [Ручка, Набор, Карандаш, Calculator]
Тем не менее, вам следует подумать о том, чтобы не использовать метод clone(). Он очень хорошо работает с коллекциями, но в целом лучше использовать конструктор new ArrayList.