我的课程结构 -
class A {
List<B> bList;
}
class B {
List<C> cList;
}
现在我有一个A类列表,我想根据c.size() > 0的条件对其进行过滤。我可以使用两个for循环(一个用于列表A,另一个用于列表B)来过滤它,但我想知道是否可以使用Java Stream API过滤A列表而不使用for循环。
我的当前代码(已更新)-
List<A> result = = new ArrayList<>();
for (A a : aList) {
List<B> tempBList = = new ArrayList<>();
for (B b : a.getBList) {
if (b.getCList.size() > 0) {
tempBList.add(b);
}
}
if (tempBList.size() > 0) {
a.setBList(tempBList);
result.add(a);
}
}
result.add(a);
语句后加上break;
。 - Linob.c.size() > 0
的b
实例,他都添加了一个a
实例。这看起来像是一个笔误。 - Linoa.b
是一个List
。OP 遍历该列表,然后检查项b
是否有一个大于 0 的列表b.c
。如果是,则将a
添加到结果中。当前代码对每个b
都执行此操作。这意味着可能会有多个相同的a
实例在结果列表中。 - Lino