Java - копирование массивов объектов

java collections arraylist

1542 просмотра

1 ответ

Я пытаюсь скопировать содержимое массива в другой объект. Я попытался инициализировать новый объект ArrayList следующими способами

newArrList.addAll(oldArrList);

а также

newArrList = new ArrayList(oldArrList);

Но каждый раз, когда я изменяю один из списков массивов, значение также изменяется в другом ArrayList.

Может кто-нибудь, пожалуйста, скажите мне, как я могу избежать этого.

Благодарю.

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

Ответы (1)


15 плюса

Решение

ArrayListБудет содержать только ссылки на объекты - не сами объекты. Когда вы копируете содержимое одного списка в другой, вы копируете эти ссылки. Это означает, что два списка будут ссылаться на одни и те же объекты.

Я подозреваю, что когда вы говорите, что вносите изменения в один из списков, вы на самом деле подразумеваете, что вносите изменения в один из объектов, на которые ссылается список. Этого следовало ожидать.

Если вы хотите, чтобы списки имели ссылки на независимые объекты, вам нужно будет сделать глубокую копию объектов, когда вы копируете их из одного списка в другой. Как именно это работает, будет зависеть от объектов, которые вы копируете.

Автор: Jon Skeet Размещён: 07.10.2009 12:48
Вопросы из категории :
32x32