我有一个这样的课程
public class Example {
private List<Integer> ids;
public getIds() {
return this.ids;
}
}
如果我有这个类的对象列表,就像这样
List<Example> examples;
我如何能够将所有示例的id列表映射到一个列表中? 我试过这样:
List<Integer> concat = examples.stream().map(Example::getIds).collect(Collectors.toList());
但是Collectors.toList()
使用Java 8 stream api获得此功能的正确方法是什么?
答案 0 :(得分:19)
使用flatMap
:
List<Integer> concat = examples.stream()
.flatMap(e -> e.getIds().stream())
.collect(Collectors.toList());
答案 1 :(得分:3)
使用方法引用表达式而不是lambda表达式的另一种解决方案:
List<Integer> concat = examples.stream()
.map(Example::getIds)
.flatMap(List::stream)
.collect(Collectors.toList());