Как отфильтровать отфильтрованный поток - PullRequest
0 голосов
/ 09 апреля 2019

Я изучаю Java8 с помощью потока.

Я получил список CustomDto.CustomDto имеет список CustomDto1.У CustomDto1 есть список CustomDto2.

Мне нужен такой результат.

List<CustomDto> response = data from read;
response.stream()
.filter(x-> x.getCustomDto1List.stream()
    .filter(y-> y.getCustomDto2List.stream()
       .filter(z-> z.getCustomDto2.getSomeColumn.equals("XXX"))
     )
)

Возможно ли это?и если это так, как я могу получить этот результат?

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Похоже, вы пытаетесь найти все объекты, которые имеют определенное значение во вложенном списке. Как то так?

response.stream().filter(x -> x.getCustomDto1List.stream()
        .flatMap(y-> y.getCustomDto2List.stream())
        .anyMatch(z-> z.getSomeColumn.equals("XXX")))
    .collect(toList());
0 голосов
/ 09 апреля 2019

Да, вы можете, но вы должны использовать метод anyMatch ();

.filter(x-> x.getCustomDto1List.stream()
                    .anyMatch(y-> y.getCustomDto2List.stream()
                            .anyMatch(z-> z.getCustomDto2.getSomeColumn.equals("XXX"))
                    )
            )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...