使用 java 流从包含 List<String> 的 List<Object> 中检索 List<String>

Pik*_*ppa 0 java java-8

我有这种情况:

Class Employee{
//some attributes
List<String> idContract

//getter, setter
}
Run Code Online (Sandbox Code Playgroud)

我需要使用 java 8 流从列表中检索列表 idContracts。

我正在尝试这样的事情:

lst.stream().filter(o->!o.getLstDipFuoriSoglia().isEmpty())
      .map(ResultOdg::getLstDipFuoriSoglia)
      .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但是,当然,返回一个 List< List < String >>,那么我怎样才能实现这个目标呢?

谢谢你的回答

Dea*_*ool 7

只需添加flatMap转换List为的操作Stream

lst.stream().filter(o->!o.getLstDipFuoriSoglia().isEmpty)
            .map(ResultOdg::getLstDipFuoriSoglia)
            .flatMap(List::stream)
            .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

或者您可以进行一次flatMap手术

lst.stream().filter(o->!o.getLstDipFuoriSoglia().isEmpty)
            .flatMap(list->list.getLstDipFuoriSoglia().stream())
            .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)