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()
:
- Не важно
- Скорее всего нет
- Сделайте тест для вашей конкретной конфигурации системы и варианта использования
Вопрос гласит, что shallowcopy - не deepcopy. Копирование прямой ссылки из одного массива ссылок на другой также будет работать правильно. Глубокая копия включает в себя копию отдельного элемента в массиве.
ArrayList<Integer> list=new ArrayList<Integer>();
list.add(3);
ArrayList<Integer> list1=list; //shallow copy...
Есть ли проблема в этом??