Как скопировать значения, а не ссылки, из списка <Integer> в другой список?

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

List<Integer> listA = new ArrayList<Integer>();
List<Integer> ListB = new ArrayList<Integer>();

listA = (added some values);

listB = (do what?)...

PS. Я приписываю вопрос начинающим, но я никогда такого не делал.

Ответ 1

Вы можете попробовать и посмотреть метод Collections.copy:

public static void copy (List dest,             Список src)

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

Параметры: dest - список адресатов. src - Список источников.

Примечание. Вышеизложенное должно работать для простых типов данных, таких как целые, однако, если у вас есть свои собственные объекты, которые, в свою очередь, могут ссылаться на другие объекты, вам придется перебирать каждый объект и копировать его отдельно.

Ответ 2

Нет абсолютно никаких оснований делать копию целого. Целое - это неизменный класс. Это означает, что его значение задается при создании экземпляра Integer и никогда не может измениться. Таким образом, ссылка Integer может быть разделена несколькими списками и потоками без страха, потому что никто не может изменить ее значение. Таким образом, ваш вопрос не имеет никакого смысла.

Чтобы создать ArrayList b, содержащий те же целые числа, что и другой список a, просто используйте следующий код:

List<Integer> b = new ArrayList<Integer>(a);

Конечно, Integer не будет клонирован, но это хорошо, потому что клонирование их совершенно не нужно.

Ответ 3

Используйте этот метод класса Collections, чтобы скопировать все элементы ArrayList в другой ArrayList:

Collections.copy(listA, listB); 

Ответ 4

Попытайтесь использовать это, в то время как ответы, заданные другими парнями, полностью прекрасны. Но по моему варианту наилучшим способом было бы следующее:

List<Integer> listB = new ArrayList<Integer>(listA); 

Ответ 5

ListB.addAll(ListA);

Класс Integer неизменен, поэтому после того, как начальное значение целочисленного объекта было установлено, оно не может быть изменено. Этот вопрос не имеет смысла, потому что вам не нужно беспокоиться о том, что содержимое listB изменяется с помощью методов, действующих на содержимое ListA, потому что объекты Integer неизменяемы.

Ответ 7

у меня есть ArrayList в классе A и хочу скопировать все элементы этого класса в LinkedList класса B.

Ответ 8

Попробуйте это.

ListB.addAll(listA);