Java - копирование массивов объектов - PullRequest
5 голосов
/ 07 октября 2009

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

newArrList.addAll(oldArrList);

и

newArrList = new ArrayList(oldArrList);

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

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

Спасибо.

1 Ответ

15 голосов
/ 07 октября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...