Java 8 使用带列表的平面地图
如果我有一个Java 8 使用带列表的平面地图,java-8,java-stream,flatten,Java 8,Java Stream,Flatten,如果我有一个列表,我可以使用平面图来展平列表。 但是我有一个byMyClass,它有一个List,而Foo类有一个条列表List,然后我必须这样做: myClass.getFoos().stream().map(Foo::getBars).forEach({ bar -> // some code }); 在这种情况下,是否可以使用平面图,这样我就可以一次从MyClass中获取条形图列表。试试以下方法: myClass.getFoos() .stream()
列表
,我可以使用平面图来展平列表。
但是我有一个byMyClass
,它有一个List
,而Foo
类有一个条列表List
,然后我必须这样做:
myClass.getFoos().stream().map(Foo::getBars).forEach({
bar -> // some code
});
在这种情况下,是否可以使用平面图,这样我就可以一次从MyClass
中获取条形图列表。试试以下方法:
myClass.getFoos()
.stream()
.flatMap(x -> x.getBars().stream())
.forEach(...)
myClass.getFoos().stream()
.map(Foo::getBars)
.flatMap(List::stream) // flatten the lists
.forEach(...);
注意方法引用的独特用法,我发现它比lambdas更整洁、更容易阅读。太好了,我不知道我可以一张接一张地绘制平面图。