正确使用 Java 8 供应商消费者



我仍在与Java 8的供应商和消费者作斗争,我有这个:

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连接。

相关内容

  • 没有找到相关文章

最新更新