На ум приходят два варианта:
- Вызовите конструктор
ArrayList
, который берет другую коллекцию - это сделает копию - Вызов
clone()
на ArrayList
Обратите внимание, что оба из них создадут мелкие копии - каждый список будет содержать ссылки на одни и те же объекты.Хорошо, если они неизменяемы (например, строки), но если вы хотите создать более глубокую копию, вам нужно проделать дополнительную работу.
Кстати, есть ли причина, по которой вы не используете непатентованные средства?Например, я бы, вероятно, использовал:
LinkedList<ArrayList<String>> partials = new LinkedList<ArrayList<String>>();
ArrayList<String> list = new ArrayList<String>();
list.add("Test");
// Create a shallow copy and add a reference to that into the linked list
partials.add(new ArrayList<String>(list));
list.add("Another element");
// Prints 1, because the lists are distinct
System.out.println(partials.element().size());
Если ничто не должно изменить содержимое списков в связанном списке, вы можете посмотреть на неизменяемые коллекции, доступные в Guava или оберните ваш клон, используя Collections.unmodifiableList
.Обратите внимание, что последний создает только представление в исходном списке, поэтому вам все равно придется сначала выполнить шаг клонирования.