如何在java 8流上运行嵌套收集

Nic*_*Div 9 java lambda java-8 java-stream

我有一个对象列表A,A有一个名为Address的属性,它有一个街道名称 - streetName

从AI想要获取所有街道名称列表的对象列表中.一个级别的集合似乎在流中非常可行但是如何使用一行代码获得嵌套的String.

因此,从对象AI获取地址列表可以这样做:

listOfObjectsA.stream().map(a::getAddress).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

我的最终目标是获取街道名称列表,因此我无法使用lambdas找出二级集合.

我无法找到我想要的精确示例.有人可以帮我这个.

roh*_*ats 9

您可以简单地链接另一个map操作以获取街道名称:

listOfObjectsA
.stream()
.map(a::getAddress)
.map(a -> a.getStreetName())  // or a::getStreetName
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

第一个map将对象转换为Address对象,然后mapAddress对象转换为对象并将其转换为对象,street names然后由收集器收集.

流操作形成一个管道,因此您可以在终端操作之前拥有所需的操作(在本例中为collect操作).