Обьекты и ссылки в Java

249
10 апреля 2018, 06:36

Описание: При удалении из cacheMatrix, объекты удаляются отовсюду(из matrix).

Вопрос: Не могу понять как это работает, и как предотвратить.

Спасибо за помощь !

private LinkedList<LinkedList<Double>> reduceMatrix( LinkedList<LinkedList<Double>> matrix) {
    LinkedList<LinkedList<Double>> cacheMatrix = new LinkedList<>(matrix);
    cacheMatrix.get(0).remove(1);
    cacheMatrix = new LinkedList<>(matrix);
    System.out.println(cacheMatrix);
}
Answer 1

Вы можете посмотреть любую реализацию, скажем из Open jdk и увидеть, что там поэлементно добавляется всё.

Но у вас список списков. То есть, в итоговый список cacheMatrix добавляются ссылки на списки LinkedList<Double>. Поэтому, обращаясь к cacheMatrix.get(0), вы, по сути, обращаетесь к matrix.get(0).

READ ALSO
Указать код Java в среде NetBeans

Указать код Java в среде NetBeans

Создал менюМне нужно при выборе пункта меню запускать формы с именем Forma1

191
Двумерный Vector Java

Двумерный Vector Java

В Java новичок, хочу обернуть двумерный массив в двумерный вектор, компилятор выдает ошибку, объясните в чем причина?

214
Рекурсия в Java: почему не отрабатывается return?

Рекурсия в Java: почему не отрабатывается return?

addChild добавляет объект в HashSet, нахождение объекта в коллекции говорит о том, что он является ребенком объекта, вызавшевого метод:

192
Использование Фрагментов

Использование Фрагментов

Добрый деньПрочитал про фрагменты,не до конца понял логику их использования

215