本文介绍了将嵌套的For循环转换为流的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在理解流时遇到了一些麻烦.我环顾四周,似乎找不到与我的用例匹配的示例.
I'm having some trouble understanding streams. I've looked around and can't seem to find an example that matches my use case.
我有一个嵌套的for循环:
I have an existing nested for loop:
List<ObjectB> objectBs = new ArrayList<ObjectB>();
for (ObjectA objA: objectAList) {
for (ObjectB objB: objA.getObjectBList()) {
if (objB.getNumber() != 2) {
objectBs.add(objB);
}
}
}
大量示例展示了如何将objB.getNumber()
添加到列表中,而不是objB
.
Alot of exampls show how to add objB.getNumber()
to a list but not objB
.
推荐答案
您可以使用flatMap
获取所有ObjectB
实例的Stream<ObjectB>
并过滤所需编号的ObjectB
: /p>
You can use flatMap
to obtain a Stream<ObjectB>
of all the ObjectB
instances and filter the ObjectB
's of the required number :
List<ObjectB> objectBs =
objectAList.stream()
.flatMap (a -> a.getObjectBList().stream())
.filter (b -> b.getNumber() != 2)
.collect (Collectors.toList());
这篇关于将嵌套的For循环转换为流的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!