Iterate two lists simultaneously and create another using streams(同时迭代两个列表并使用STREAMS创建另一个列表)
本文介绍了同时迭代两个列表并使用STREAMS创建另一个列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望使用STREAMS实现以下目标:
List<MyObject> list1 = Arrays.asList(obj1, obj2, obj3);
List<Boolean> list2 = Arrays.asList(true, false, true);
List<MyObject> list = new ArrayList<>();
for(int i=0; i<list1.size();i++) {
if(list2.get(i))
list.add(list1.get(i));
}
有人能帮忙吗?这应该很容易,但我对Java Streams还是个新手。
注意:list1和list2的长度始终相同。
推荐答案
您可以执行以下操作:
List<MyObject> list = IntStream.range(0, list1.size())
.filter(i->list2.get(i))
.map(i->list1.get(i))
.collect(Collectors.toList())
如果Java具有用于流的内置zip
,情况可能会更好。例如,对于番石榴,您可以使用:
Streams.zip(list2.stream(), list1.stream(), (a,b) -> a ? b : null)
.filter(Objects::nonNull)
.collect(Collectors.toList())
这篇关于同时迭代两个列表并使用STREAMS创建另一个列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:同时迭代两个列表并使用STREAMS创建另一个列表
基础教程推荐
猜你喜欢
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01