我正在与多层次深度的课程一起工作。我试图过滤内部深度,但收到错误
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
内部值进行过滤
答案 0 :(得分:3)
如果您尝试过滤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>
中List<B>
的任何'C'部分与A中的{provide: MatDialog, useClass: MatDialogMock} // Add this in the providers array
export class MdDialogMock {
// When the component calls this.dialog.open(...) we'll return an object
// with an afterClosed method that allows to subscribe to the dialog result observable.
open() {
return {
afterClosed: () => Observable.of({})
};
}
};
的任何'B'部分都匹配给定条件。