Сейчас я изучаю 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"))
)
)
Является ли это возможным ? и если это так, как я могу получить этот результат?




Да, вы можете, но вы должны использовать метод anyMatch();
.filter(x-> x.getCustomDto1List.stream()
.anyMatch(y-> y.getCustomDto2List.stream()
.anyMatch(z-> z.getCustomDto2.getSomeColumn.equals("XXX"))
)
)
Тогда просто используйте .map() вместо .filter().
Похоже, вы пытаетесь найти все объекты, которые имеют определенное значение во вложенном списке. Что-то вроде этого?
response.stream().filter(x -> x.getCustomDto1List.stream()
.flatMap(y-> y.getCustomDto2List.stream())
.anyMatch(z-> z.getSomeColumn.equals("XXX")))
.collect(toList());
Спасибо за совет. Но я хочу, чтобы весь список списков customDto.