Я пытаюсь собрать результат списка и упорядочить их в карту, где значением является карта:
private Map<Organisation, Map<LocalDate, Status>> getSummaries(final List<Status> summaries) {
return summaries
.stream()
.collect(groupingBy(Status::getOrganisation,
toMap(Status::getProcessedDate, Function.identity())));
}
Я получаю ошибку java.lang.IllegalStateException: Duplicate key
, так как getProcessedDate()
одинакова для разных значений в список.
Есть ли способ объединить несколько объектов с одинаковым processeddate
в карту?
например, скажем, у меня есть эти объекты в списке:
Summary(ProcesseDate=2020-01-30, Organisation=ABC, status=OK, statusCount=5)
Summary(ProcesseDate=2020-01-30, Organisation=ABC, status=FAILED, statusCount=2)
Summary(ProcesseDate=2020-01-30, Organisation=APPLE, status=OK, statusCount=5)
Summary(ProcesseDate=2020-01-30, Organisation=APPLE, status=REJECTED, statusCount=5)
Значения, содержащиеся в карте, должны быть:
key=ABC
value { key=2020-01-30, value= Summary(ProcesseDate=2020-01-30, Organisation=ABC, status=OK, statusCount=5), Summary(ProcesseDate=2020-01-30, Organisation=ABC, status=FAILED, statusCount=2) }
Когда я пытался toMap(Status::getProcessedDate, Function.identity(), (v1, v2) -> v2)));
, он удаляет одну из записей