我正在与多层次深度的类一起工作。我正在尝试过滤内部深度,但收到错误
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'进行过滤,以使A中List<C>
的任何'B'部分中的List<B>
的任何'C'部分都匹配给定条件。