【发布时间】:2018-07-04 00:06:59
【问题描述】:
我想通过调用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());
【问题讨论】:
-
myList.stream() .flatMap(x -> Stream.of(x, x, x)) .collect(Collectors.toList());
标签: java java-8 java-stream