我有一個對象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