我有一个aList
类对象列表A
。此aList
是另一个列表bList
的每个元素b的成员。每个元素b都是类B
。类B
的结构如下:
class B {
String status;
String name;
}
班级A
的结构如下:
class A {
List<B> bList;
String status;
}
现在我想按如下方式过滤aList
:
最终列表aListResult
应仅包含对象a,如果a.status =&#34; Active&#34;以及每个&#34; Active&#34; aList的a应该只包含bList
&#34; Active&#34; b对象,即如果b将在关联的bList
中,当且仅当b.status == Active时。
如何在Java 8中实现这一点,我无法弄清楚。
答案 0 :(得分:9)
我假设您希望输出列表仅包含所有关联的B实例都处于活动状态的活动A实例:
List<A> aList = ...;
List<A> aListResult =
aList.stream()
.filter(a -> a.getStatus().equals("Active"))
.filter(a -> a.bList.stream().allMatch(b -> b.getStatus().equals("Active")))
.collect(Collectors.toList());