Добавление одного списка в другой список в java?

У меня есть код java.

List<SomePojo> list = new ArrayList<SomePojo>();
//add 100 SomePojo objects to list.

Теперь список содержит 100 объектов.

Если я создаю еще один экземпляр, как показано ниже:

List<SomePojo> anotherList = new ArrayList<SomePojo>();
anotherList .addAll(list);

Благодарю!

Ответ 1

Объект только один раз в памяти. Ваше первое добавление в list просто добавляет ссылки на объекты.

anotherList.addAll также просто добавит ссылки. Так что все еще только 100 объектов в памяти.

Если вы измените list, добавив/удалив элементы, anotherList не будет изменен. Но если вы измените какой-либо объект в list, тогда его содержимое также будет изменено при доступе к нему из anotherList, потому что в обоих списках указывается anotherList и та же ссылка.

Ответ 2

100, он будет содержать те же ссылки. Поэтому, если вы anotherList изменения в конкретный объект в list, это повлияет на один и тот же объект в anotherList.

Добавление или удаление объектов в любом из списков не повлияет на другое.

list и anotherList - это два разных экземпляра, они содержат только те же ссылки на объекты "внутри".

Ответ 3

Ссылаясь на официальный javadoc List.addAll:

Appends all of the elements in the specified collection to the end of
this list, in the order that they are returned by the specified
collection iterator (optional operation).  The behavior of this
operation is undefined if the specified collection is modified while
the operation is in progress.  (Note that this will occur if the
specified collection is this list, and it nonempty.)

Таким образом, вы скопируете ссылки объектов в list на anotherList list. Любой метод, который не работает с ссылочными объектами anotherList (например, удаление, добавление, сортировка), является локальным для него и, следовательно, не будет влиять на list.

Ответ 4

Выдержка из API Java для addAll (коллекция c) в списке интерфейсов см. Здесь

Msgstr "Добавляет все элементы указанной коллекции в конец этого списка в порядке, в котором они возвращаются указанным итератором коллекции (дополнительная операция)."

У вас будет столько же объектов, сколько у вас в обоих списках - количество объектов в вашем первом списке плюс количество объектов, которые у вас есть во втором списке, - в вашем случае 100.

Ответ 5

нет... Как только u выполнил оператор anotherList.addAll(list), а после этого, если и изменить некоторые данные списка, он не переносится в другой список