【发布时间】:2022-01-08 09:05:14
【问题描述】:
我有一个对象 A 的列表。此对象 A 有一个 对象 B 列表作为属性。 鉴于此,我试图根据 B 类型对象的属性(假设它是一个 ID)过滤 A 类型数组。
例子:
listOfObjectA = listOfObjectA.stream().filter(a -> a.getListOfB().stream().filter(b -> b.getId() == 10));
我删除了.collect(Collectors.toList()) 以使帖子“更干净”。
这样,我收到了这个错误:Type mismatch: cannot convert from List<B> to boolean。
我也尝试了 findAny,但也没有好的结果。
【问题讨论】:
-
"
... a -> c.getListOfB()..." - 这看起来很可疑。c是什么?在这里使用c是否正确? -
对不起,我的意思是'a'
-
如果要保留至少包含一个 ID 为 10 的
ObjectB的ObjectA元素,则“内部”过滤器应为anyMatch(b -> b.getId() == 10)。如果所有ObjectB元素的 ID 必须为 10 ,请改用allMatch。