Подтвердить что ты не робот

ArrayList неглубокая копия итерации или клонирования()

Мне нужна небольшая копия java ArrayList, следует ли использовать clone() или перебирать исходный список и копировать элементы в новый массивList, который быстрее?

4b9b3361

Ответ 1

Используйте clone() или используйте конструктор-копию.

Конструктор-копир делает дополнительное преобразование из переданной коллекции в массив, в то время как метод clone() использует внутренний массив напрямую.

Имейте в виду, что clone() возвращает Object, поэтому вам нужно будет указать List.

Ответ 3

Вместо повторного итерации вручную вы можете использовать конструктор .

Что касается разницы в скорости между этим и использованием clone():

  • Это не имеет значения.
  • Скорее всего нет.
  • Сделайте тест для вашей конкретной конфигурации системы и используйте случай

Ответ 4

в вопросе говорится, что мелкотопия не является глубококопийной. Сопоставление прямой ссылки с одной ссылки на аррайалист на другую также будет работать правильно. Копировать копию включает копирование отдельного элемента в arraylist.

ArrayList<Integer> list=new ArrayList<Integer>();
list.add(3);
ArrayList<Integer> list1=list; //shallow copy...

Есть ли в этом проблема?