M06H:
値が地図です私は、リストの結果を収集し、地図にそれらを整理しようとしています:
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)));
には、エントリのいずれかを削除します
また:
あなたがデータをマージすると、独自のキーを持っていないしたくない場合は、単に、ネストされたグループを探している可能性があります:
private Map<Organisation, Map<LocalDate, List<Status>>> getSummaries(final List<Status> summaries) {
return summaries
.stream()
.collect(groupingBy(Status::getOrganisation, groupingBy(Status::getProcessedDate)));
}