我有一个带有以下元素的 dto 列表。userSeqId有重复的值,
private int userSeqId;
private String firstName;
private String lastName;
private String acctAgencyNumber;
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 Java 8 Lambda 按“userSeqId”分组到地图。
我想要Map<Integer, List<String>>
Key 应该在哪里userSeqId,Value 是acctAgencyNumber.
当我使用
Map<Integer, List<UserBasicInfoDto>> superUserAcctMap = customerSuperUserList.stream()
.collect(Collectors.groupingBy(UserBasicInfoDto::getUserSeqId));
Run Code Online (Sandbox Code Playgroud)
我知道Map<Integer, List<UserBasicInfoDto>>键在哪里,userSeqId但值是整个对象的列表。
有一个适用于您的用例的专用版本groupingBy():
Map<Integer, List<String>> result = customerSuperUserList.stream()
.collect(Collectors.groupingBy(
UserBasicInfoDto::getUserSeqId,
Collectors.mapping(UserBasicInfoDto::getAcctAgencyNumber, toList())));
Run Code Online (Sandbox Code Playgroud)
关键是使用辅助mapping收集器,您可以使用它覆盖默认groupingBy行为。
| 归档时间: |
|
| 查看次数: |
4054 次 |
| 最近记录: |