Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 8 使用带列表的平面地图_Java 8_Java Stream_Flatten - Fatal编程技术网

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()

如果我有一个
列表
,我可以使用平面图来展平列表。 但是我有一个by
MyClass
,它有一个
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更整洁、更容易阅读。

太好了,我不知道我可以一张接一张地绘制平面图。