ArrayList итерация или клон ()

Мне нужна мелкая копия Java ArrayList, я должен использовать clone() или перебрать оригинальный список и скопировать элементы в новый arrayList, что быстрее?

4 ответа

Решение

Использование clone()или используйте конструктор копирования.

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

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

Нет необходимости повторять:

List original = ...
List shallowCopy = new ArrayList(original);

http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html

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

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

  1. Не важно
  2. Скорее всего нет
  3. Сделайте тест для вашей конкретной конфигурации системы и варианта использования

Вопрос гласит, что shallowcopy - не deepcopy. Копирование прямой ссылки из одного массива ссылок на другой также будет работать правильно. Глубокая копия включает в себя копию отдельного элемента в массиве.

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

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

Другие вопросы по тегам