如何使用优化此流来收集集合的嵌套级别和根级别。
final Set<String> groupedUsers = new HashSet<>();
groups.stream().forEach(group -> {
groupedUsers.add(group.getTeamLeadId());
groupedUsers.addAll(group.getTeamMemberIds().stream().collect(Collectors.toSet()));
});发布于 2018-12-19 11:17:54
不要使用forEach向集合添加元素。
Set<String> groupedUsers = groups.stream()
.flatMap(g -> Stream.concat(
Stream.of(g.getTeamLeadId()), g.getTeamMemberIds().stream()))
.collect(toSet());或者只需使用普通的旧(增强) for循环即可。溪流在这里并没有给你任何明显的优势。
发布于 2018-12-19 11:27:01
嗯,Stream API和lambdas在这里不给你任何优势。
优化此流以收集
如果我正确地理解了您的“优化”单词的含义,那么我将使用旧风格的foreach。
Set<String> groupedUsers = new HashSet<>();
for (Group g : groups) {
groupedUsers.add(g.getTeamLeadId());
groupedUsers.addAll(g.getTeamMemberIds());
}如果你只有一把锤子,一切看起来都像钉子。
发布于 2018-12-19 11:20:49
您可以跳过groups.stream().forEach()中的流创建,因为Iterable.forEach()
groups.forEach(group -> {
..
});由于多年的循环优化投入到JIT中,流通常比常规迭代花费更大。
https://stackoverflow.com/questions/53850072
复制相似问题