Получение списка <String>из списка <Object>, содержащего список <String>с java потоком - PullRequest
0 голосов
/ 20 января 2020

У меня такая ситуация:

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

//getter, setter
}

И мне нужно извлечь список idContracts из списка, используя поток java 8.

Я пытался что-то подобное:

lst.stream().filter(o->!o.getLstDipFuoriSoglia().isEmpty())
      .map(ResultOdg::getLstDipFuoriSoglia)
      .collect(Collectors.toList());

но это, конечно, возвращает List >, так как я могу достичь этой цели?

Спасибо за ваши ответы

1 Ответ

8 голосов
/ 20 января 2020

Просто добавьте flatMap операцию для преобразования List в Stream

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

Или вы можете иметь одну flatMap операцию

lst.stream().filter(o->!o.getLstDipFuoriSoglia().isEmpty)
            .flatMap(list->list.getLstDipFuoriSoglia().stream())
            .collect(Collectors.toList());
...