我有一个对象Foo
,其中包含一列Bar
。这些类描述如下:Java 8 FlatMap - 以嵌套形式添加项目并使用FlatMap检索对象
class Foo {
String name;
List<Bar> bars = new ArrayList<Bar>();
Foo(String name){
this.name = name;
}
}
class Bar {
String name;
Bar(String name){
this.name = name;
}
}
现在,我创建Foo
对象的列表,每个包含Bar
对象的列表如下:
IntStream
.range(1, 4)
.forEach(i -> foos.add(new Foo("Foo" + i)));
foos.forEach(f ->
IntStream.range(1,4)
.forEach(i -> f.bars.add(new Bar("Bar"+i+" -> "+f.name))));
,然后在Stream
如使用flatMap
如下:
foos.stream()
.flatMap(f -> f.bars.stream())
.forEach(i -> System.out.println("Bar Name : "+i.name));
如何可以做所有这些事情在使用Java执行一次Stream
和lambdas?有没有其他方法可以用Java 8风格来做类似的事情?
我用你的答案以下编译错误:在类型IntStream的方法mapToObj(IntFunction extends U>)不适用的参数((我) - > {}) –
KayV
@KaranVerma现在全部修复。 – Eran