获得
我正在使用具有多级深度的类。我试图在内部深度过滤,但我正在收到错误
Bad return type in lambda expression: Stream<InnerClassName> cannot be converted to boolean
我的课程是
class A {
List<B> B;
Integer Id;
}
class B {
List<C> C;
Integer Id;
}
class C {
Integer Id;
}
如果我的列表称为AList
我尝试做
AList.getBlist().stream().filter(bList -> bList.getId.equals(5));
效果很好。我要完成的工作是用Class C
中的值进行过滤,该值可以通过Blist.getClist
如果您要过滤List<A>
的内容并获得与输出相同的格式,则可以执行以下操作:
List<A> output = aList.stream()
.filter(a -> a.getBList().stream() // bList from a
.flatMap(b -> b.getCList().stream()) // cList from each b
.anyMatch(c -> c.getId() == 5)) // equals(5)
.collect(Collectors.toList());
上述代码过滤器中所有来自List<A>
的" A"中的过滤器,使得在匹配给定条件的List<B>
的任何" B"部分中的List<C>
的任何" C"部分。