Поместите список в массив в JAVA - PullRequest
0 голосов
/ 15 апреля 2020

У меня проблема с Java: у меня есть список целых чисел, которые я хочу поместить в указанный c столбец и строку массива. Например, в колонке 1 я хочу поместить [1,2,3] и колонку 2 [8] ...

Я попробовал кое-что: я хотел поместить список в массив, а затем очистить список поместить новые значения и поместить в другое место моего массива et c ...

  • Я создал массив (RANG) списка и мой список (ELEMENTS)

    List[] rang=new List[nbSommets];
    List<Integer> elements= new ArrayList<>(nbSommets);
    

Я добавил несколько чисел и поместил в массив ВЕСЬ мой список

rang[???]=elements;

Затем я очищаю список, чтобы поставить новые значения

elements.clear();

Но когда я очищаю список, это тоже очищает список в моем массиве ...

Как я могу это сделать?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 15 апреля 2020

Когда вы делаете rang[???] = elements;, вы только назначаете ссылку на массив elements на rang[???], вы не копируете все значения в новом массиве.

Вам нужно вместо очистки массива элементов создавать новый массив (new ArrayList<>()) каждый раз.

0 голосов
/ 15 апреля 2020

Заменить

elements.clear();

на

elements = new ArrayList<>(nbSommets);

Почему elements.clear() удаляет исходный ArrayList объект

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

Почему elements = new ArrayList<>(nbSommets) будет работать?

Поскольку он отключит ссылку на исходный ArrayList объект и точка elements на новый ArrayList.

0 голосов
/ 15 апреля 2020

Проблема в том, что если вы создаете List elements = new ArrayList(), вы создаете новый объект. Если вы поместите список внутри вашего массива на rang[???] = elements, теперь ваш массив содержит ссылку на созданный вами список. Таким образом, ваша переменная elements указывает на тот же объект, что и rang[???]. Вы можете поместить его в массив по rang[???] = new ArrayList(elements), и вы получите новый список, а когда вы очистите элементы, список в массиве останется нетронутым.

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