如果我有List<List<Foo>>
,则可以使用平面地图来平铺列表。
但是我有MyClass
,它有一个List<Foo>
,而Foo
类有酒吧列表List<Bar>
,那么我必须做这样的事情:
myClass.getFoos().stream().map(Foo::getBars).forEach({
bar -> // some code
});
在这种情况下是否可以使用平面地图,所以我可以一次拍摄MyClass
中的条形图。
答案 0 :(得分:3)
myClass.getFoos()
.stream()
.flatMap(x -> x.getBars().stream())
.forEach(...)
答案 1 :(得分:3)
尝试一下:
myClass.getFoos().stream()
.map(Foo::getBars)
.flatMap(List::stream) // flatten the lists
.forEach(...);
请注意方法引用的大量使用,与lambda相比,我发现它更整洁且易于阅读。