java - 嵌套级别的 Java 8 流优化
问题描述
我们如何使用优化此流来收集集合的嵌套级别和根级别。
final Set<String> groupedUsers = new HashSet<>();
groups.stream().forEach(group -> {
groupedUsers.add(group.getTeamLeadId());
groupedUsers.addAll(group.getTeamMemberIds().stream().collect(Collectors.toSet()));
});
解决方案
不要forEach
用于将元素添加到集合中。
Set<String> groupedUsers = groups.stream()
.flatMap(g -> Stream.concat(
Stream.of(g.getTeamLeadId()), g.getTeamMemberIds().stream()))
.collect(toSet());
或者只是使用普通的旧(增强型)for 循环。流在这里没有给你任何明显的优势。
推荐阅读
- neo4j - gds.alpha.shortestPath.stream 中的节点属性
- logic - 如何找到给定数组的后缀数组和前缀数组?
- image - 如果我们沿着一个轴旋转相机,图像是如何失真的
- html - 如何在没有 JS 的情况下让我的幻灯片重复播放?
- c++ - 如何防止在 for 循环结束之前在 C 中换行;
- flutter - Flutter 单元测试中的断言错误失败
- javascript - offie-js Word Web 插件:可以动态添加菜单项
- install4j - 使用 Install4J 生成 Windows 可执行文件,JDK11 单独工作
- python - 是否可以在 manim 的图形对象上使用 ReplacementTransform?
- javascript - Prevent Multiple Instances for SetInterval