【发布时间】:2016-12-01 09:42:52
【问题描述】:
我有一个对象Foo,其中包含Bar 的列表。类描述如下:
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 风格做这种事情?
【问题讨论】:
标签: java java-8 java-stream collectors flatmap