如何过滤已过滤的流

时间:2019-04-09 12:19:39

标签: java jpa filter stream

我现在正在使用流学习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 :(得分:0)

是的,可以,但是您应该使用名为anyMatch();

的方法
.filter(x-> x.getCustomDto1List.stream()
                    .anyMatch(y-> y.getCustomDto2List.stream()
                            .anyMatch(z-> z.getCustomDto2.getSomeColumn.equals("XXX"))
                    )
            )

答案 1 :(得分:0)

似乎您正在尝试在嵌套列表中查找具有特定值的所有对象。像这样吗?

response.stream().filter(x -> x.getCustomDto1List.stream()
        .flatMap(y-> y.getCustomDto2List.stream())
        .anyMatch(z-> z.getSomeColumn.equals("XXX")))
    .collect(toList());