我想通过调用 expand()
来映射列表中的每个条目,它返回多个条目,然后将结果收集为列表。
如果没有流,我会像这样完成此操作:
List<String> myList = new ArrayList<>();
List<String> expanded = new ArrayList<>();
for (String s : myList) {
expanded.addAll(expand(s));
}
return expanded;
private List<String> expand(String x) {
return Arrays.asList(x, x, x);
}
如何使用流来实现这一点?这会产生编译错误:
return myList.stream().map(this::expand).collect(Collectors.toList());
最佳答案
flatMap
应该对你有帮助:
return myList.stream()
.flatMap(x -> expand(x).stream())
.collect(Collectors.toList());
关于java - 如何从映射到多个结果的流中收集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48431061/