所以我有一段代码,我正在遍历一个数据列表。每个数据都是一个包含一个
案例在行内不唯一,但是案例是唯一的。
换句话说,我可以有几行具有相同案例的数据,但它们将具有唯一的裁决。
以下代码可以让我获得一个
我搜索了一下,没有找到与相同迭代类型的问题,虽然使用Java流进行flatMap似乎是一个比较流行的主题。
Long caseId
和一个Ruling
的ReportData
。每个Ruling
都有一个或多个Payment
。我想要一个Map
,其中caseId
作为键,支付集合作为值(即一个Map<Long,Set<Payments>>
)。案例在行内不唯一,但是案例是唯一的。
换句话说,我可以有几行具有相同案例的数据,但它们将具有唯一的裁决。
以下代码可以让我获得一个
Map<Long,Set<Set<Payments>>>
,这几乎是我想要的,但我一直在努力寻找正确的方式来在给定上下文中对最终集进行flatMap。我一直在使用这个映射来解决逻辑问题,但我非常希望修复算法,以便将支付集合正确组合成一个单一的集合,而不是创建一个集合的集合。我搜索了一下,没有找到与相同迭代类型的问题,虽然使用Java流进行flatMap似乎是一个比较流行的主题。
rowData.stream()
.collect(Collectors.groupingBy(
r -> r.case.getCaseId(),
Collectors.mapping(
r -> r.getRuling(),
Collectors.mapping(ruling->
ruling.getPayments(),
Collectors.toSet()
)
)));
ReportData
,Ruling
,Payment
) 这将非常清楚地说明每个类是什么。另外,你提供的代码显然无法编译:有一个被引用的case
字段(保留关键字),而且似乎r.getRulings()
应该是r.getRuling()
。 - Didier L