【发布时间】:2021-02-17 03:19:24
【问题描述】:
所以我有一个用户列表,其中包含一些信息,包括公司 uid,这个值可以在多个用户中找到,因为它定义了用户所属的公司。我需要创建一个用户列表的地图,其中地图键是公司 uid。我已经设法使用以下代码做到了:
HashMap<String, List<LDAPUser>> allUsers = new HashMap<>();
userService.findAllUsers().forEach(u -> {
Optional.ofNullable(allUsers.putIfAbsent(u.getCompanyUid(),
new ArrayList<>(Collections.singletonList(u))))
.ifPresent(list -> list.add(u));
});
即使它工作正常,我认为必须有一个更清洁的方法使用 flatMap、map 或 collect 方法从流中,但我无法让它工作,因为我没有看到如何创建一个包含所有用户的列表。
【问题讨论】:
标签: java-8 stream hashmap flatmap collect