我正在尝试收集列表的结果,并将它们组织成一个值为Map的Map:
private Map<Organisation, Map<LocalDate, Status>> getSummaries(final List<Status> summaries) {
return summaries
.stream()
.collect(groupingBy(Status::getOrganisation,
toMap(Status::getProcessedDate, Function.identity())));
}
当列表中不同的值的getProcessedDate()
相同时,我会收到java.lang.IllegalStateException: Duplicate key
错误。
有没有办法将具有相同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) -&gt; v2)));
时,它会删除其中一个条目。