Я создаю несколько связанных ссылок типа Double и независимо от того, как я объявляю другой связанный список того же типа, он всегда относится к первому списку.Есть ли способ скопировать дважды LinkedList в Java без ссылки?
Такие, как:
LinkedList<LinkedList<Double>> trainingData = new LinkedList<LinkedList<Double>>();
LinkedList<LinkedList<Double>> newData = new LinkedList<LinkedList<Double>>();
Добавить некоторые вещи trainingData ...
newData = trainingData;
Тогда любые изменения, которые я сделать, чтобы trainingData после этого назначения получает изменилось в NewData. Я также пробовал передать trainingData в конструкторе newData и использовать вложенный цикл, чтобы назначить данные trainingData для newData, но он по-прежнему дает мне те же результаты, что и newData, ссылки на trainingData.
Это правильно. newData = trainingData приводит к тому, что newData и trainingData содержат ссылку на тот же список (тот, который первоначально был назначен для TrainingData). Это делает/not/выдает новую копию списка (или новые элементы списка). –
Также обратите внимание, что ручная итерация действительно необходима, потому что вызова clone() в экземпляре linkedList недостаточно, поскольку он делает только мелкую копию: http://java.sun.com/javase/6/docs/api/java/ util/LinkedList.html # clone() – Stephan202
@ Stephen202: может быть или не быть достаточно, в зависимости от содержимого списка; если они являются неизменяемыми объектами, то мелкая копия является не только прекрасной, но и предпочтительной, так как клонирование неизменяемых является пустой тратой процессора и памяти. –