我正在处理多层次深度的类(class)。我试图在内部深度进行过滤,但收到错误
Bad return type in lambda expression: Stream<InnerClassName> cannot be converted to boolean
我的类(class)结构是
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<C>
的任何“C”部分List<B>
的任何“B”部分内A 内符合给定条件。
关于java - 多级列表过滤java 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54767779/