正确使用Java8 供应商消费者
Correct use of Java 8 supplier consumer
我还在为 Java8 与供应商和消费者苦苦挣扎,我有这个:
final Set<String> roles = new HashSet<>();
user.getRoleGroups().forEach(rg -> rg.getRoles().forEach(r -> roles.add(r.getName())));
从角色组列表中的角色列表中的角色名称获取集合。
很确定我可以在 .stream().map() 和 RoleGroup::getRoles 和 Role::getName 一行中使用一些东西来获得这个集合。但是我不知道怎么办。
你很接近!要改用 Stream
,请执行以下操作:
final Set<String> roles = user.getRoleGroups().stream()
.flatMap(g -> g.getRoles().stream())
.map(Role::getName)
.collect(Collectors.toSet());
flatMap()
的使用是这里唯一棘手的部分。 flatMap()
操作将一个元素转换为 Stream
,它与来自其他元素的 Streams
连接。
我还在为 Java8 与供应商和消费者苦苦挣扎,我有这个:
final Set<String> roles = new HashSet<>();
user.getRoleGroups().forEach(rg -> rg.getRoles().forEach(r -> roles.add(r.getName())));
从角色组列表中的角色列表中的角色名称获取集合。 很确定我可以在 .stream().map() 和 RoleGroup::getRoles 和 Role::getName 一行中使用一些东西来获得这个集合。但是我不知道怎么办。
你很接近!要改用 Stream
,请执行以下操作:
final Set<String> roles = user.getRoleGroups().stream()
.flatMap(g -> g.getRoles().stream())
.map(Role::getName)
.collect(Collectors.toSet());
flatMap()
的使用是这里唯一棘手的部分。 flatMap()
操作将一个元素转换为 Stream
,它与来自其他元素的 Streams
连接。