Java ArrayList: создайте копию массива и используйте отдельно от старых, но не создавайте новые объекты

java object reference

262 просмотра

2 ответа

Например, у меня есть ArrayList:

ArrayList<Animal> zoo = new ArrayList<Animal>();
// some code to add animals to zoo

Я хочу создать копию этого old zooфайла new zooи использовать обработчик удаления / добавления ... для обработки этого нового зоопарка (и, конечно, это не повлияет на старый зоопарк). Итак, у меня есть способ, который: создать новый зоопарк, который клонирует всех животных в старом зоопарке (это означает создание объектов животных). Так что это тоже МЕДЛЕННО.

У меня есть другой способ: создать ссылку на каждого животного старого зоопарка и скопировать в новый зоопарк. Итак, новый зоопарк просто содержит ссылку на животных зоопарка. Итак, каждый раз, когда я удаляю / добавляю, ... просто удаляю ссылку на объекты животных. Не влияет на старый зоопарк и не создает новый объект.

Но я не знаю, как это сделать на Java. Пожалуйста, научите меня.

Спасибо :)

Автор: hqt Источник Размещён: 12.11.2019 09:20

Ответы (2)


6 плюса

Решение

Это очень просто в Java:

ArrayList<Animal> copy = new ArrayList<Animal>(zoo);

Конструктор ArrayList<T>(Collection<? extends E> c)выполняет поверхностную копию списка, который вы предоставляете в качестве параметра, и это именно та семантика, которую вы ищете.

Автор: dasblinkenlight Размещён: 12.04.2012 01:17

5 плюса

Просто попробуйте:

ArrayList<Animal> newZoo = new ArrayList<Animal>(oldZoo);
Автор: Jean Logeart Размещён: 12.04.2012 01:17
Вопросы из категории :
32x32