Java Карта: put () заменяет все значения - PullRequest
0 голосов
/ 03 мая 2020

У меня есть карта ввода (давайте назовем этот imap):

Map<ID, Map<Date, Value>>

которую я пытаюсь преобразовать в структуру карты ниже:

Map<FormattedDate, Map<ID, Value>>

Я создал базовая карта инициализируется со значениями целевой структуры по умолчанию для возможных дат и идентификаторов (давайте назовем это fmap)

Code:

imap.keySet().stream().forEach( id -> {
                    imap.get(id).keySet().stream().forEach(
                            date -> {
                                fmap.get(form(date)).put(id, imap.get(id).get(date));
                            }
                }
        ));

Но на финальной карте (fmap) результат Value объект для всех дат совпадает для идентификатора, даже если на входе есть разные данные.

Вопрос:

  • Что происходит неправильно, из-за чего для идентификатора вставляется одно и то же значение с другой датой
  • Есть ли лучший способ сделать это?
...