Это предполагает, что при первом вызове System.out.println
список пуст.
Если вы посмотрите здесь https://docs.oracle.com/javase/7/docs/api/java/util/AbstractCollection.html#toString%28%29. Мы видим, что метод toString для списка возвращает элементы между квадратными скобками. Таким образом, [] - пустой список.
Во втором звонке вы добавили элемент, поэтому вы его видите. Вам нужно иметь в виду, что в Java мы передаем объекты по ссылке, что означает, что ваш listPrev
ссылается на тот же список, что и на карте.
Если вы хотите просто получить значение, то я хотел бы предложить вам изменить
listPrev = mapOfprevOp.get(operacja);
быть
listPrev.addAll(mapOfprevOp.get(operacja));
Это добавит все элементы из mapOfprevOp.get(operacja)
в listPrev без последующих операций, влияющих на карта, которая, кажется, нужна вам.
Кроме того, Map<Integer, ArrayList> mapOfprevOp = new HashMap<>();
Как правило, лучше использовать типы интерфейсов в дельцах, например, у вас есть с Картой. Поэтому я бы подумал о переключении ArrayList
на List
.
Объект, который вы используете его себе по-прежнему может быть ArrayList, как это:
Карта mapOfprevOp = новый HashMap <>(); Список listPrev = новый ArrayList <>();
Это означает, что если вы хотите изменить его как LinkedList, вы можете изменить его только в одном месте, а не в 3. Обратите внимание, что за исключением списков Arrays.asList все списки могут быть изменены.
На карте будут отображаться значения, которые вы добавили в список, потому что это тот же объект. –
Итак, как назначить значение Map в ArrayList? – marylyn17
Как я могу отделить его? – marylyn17