Aru*_*run 3 java lambda java-8 java-stream
我的班级结构 -
class A {
List<B> bList;
}
class B {
List<C> cList;
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个A类的列表,我想根据c.size()> 0的条件过滤它.我可以使用2 for for a过滤一个列表A和其他列表B但我想知道我可以使用java流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);
}
}
Run Code Online (Sandbox Code Playgroud)
Era*_*ran 10
是的你可以:
List<A> result =
listOfA.stream()
.filter(a -> a.b.stream().anyMatch(b -> b.c.size() > 0))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
这假设您要将每个A
过滤器的实例添加到输出List
一次.
归档时间: |
|
查看次数: |
123 次 |
最近记录: |