Java 8 stream flatMap是否允许对嵌套列表中的每个列表进行空检查?

Java 8 stream flatMap是否允许对嵌套列表中的每个列表进行空检查?,java,Java,我在pre-java8中有一个嵌套列表要循环。我的例子非常类似,这是一个很好的例子,然后我意识到我需要为每个列表检查null。请参考下面的示例。如果满足最后一个条件,则通过短路返回真值 但是,我不知道如何使用list.stream().flatMap()为每个列表检查null 这有点恶心,但很管用。基本上,您可以检查listB是否为null并创建一个B流。然后通过B流进行过滤,检查ListC是否为null,如果没有映射到C流。然后只需检查是否有C与参数匹配 boolean-found=listA

我在
pre-java8
中有一个嵌套列表要循环。我的例子非常类似,这是一个很好的例子,然后我意识到我需要为每个
列表检查
null
。请参考下面的示例。如果满足最后一个条件,则通过短路返回真值

但是,我不知道如何使用
list.stream().flatMap()
为每个
列表检查
null


这有点恶心,但很管用。基本上,您可以检查listB是否为null并创建一个B流。然后通过B流进行过滤,检查ListC是否为null,如果没有映射到C流。然后只需检查是否有C与参数匹配

boolean-found=listA.stream()
.filter(a->a.getListB()!=null)
.flatMap(a->a.getListB().stream())
.filter(b->b.getListC()!=null)
.flatMap(b->b.getListC().stream())
.anyMatch(c->c.name.equalsIgnoreCase(“john”);

这有点粗俗,但很管用。基本上,您可以检查listB是否为null并创建一个B流。然后通过B流进行过滤,检查ListC是否为null,如果没有映射到C流。然后只需检查是否有C与参数匹配

boolean-found=listA.stream()
.filter(a->a.getListB()!=null)
.flatMap(a->a.getListB().stream())
.filter(b->b.getListC()!=null)
.flatMap(b->b.getListC().stream())
.anyMatch(c->c.name.equalsIgnoreCase(“john”);
for(A a : ListA) {
        if(a.getListB() != null && !a.getListB().isEmpty()) {
            for(B b : a.getListB()) {
                if(b.getListC() != null && !p.getListC().isEmpty()) {
                    for(C c : b.getListC()) {
                        return (c.name.equalsIgnoreCase("john"));
                    }
                }
            }
        }
    }