【发布时间】:2016-04-13 21:51:43
【问题描述】:
我有一个嵌套的 for 循环,我想用流替换,但如果可能的话,我不知道该怎么做。基本循环如下
for (Object outer : owner.getOuterList())
for (Object inner : owner.getInnerList())
if (cond(outer, inner))
func(outer, inner);
else
moo(outer, inner);
我能够到达的唯一解决方案基本上看起来完全一样,使用forEach 而不是循环。 flatMap 似乎适用,但我不知道如何获取这两个列表。
【问题讨论】:
-
如果这些纯粹是必要的事情,那么是的,它看起来完全一样。流通常用于转换和过滤以及取出 新 元素。
-
是的,@Pillar 链接基本上就是您所需要的。
.flatMap(outer -> owner.getInnerList().stream().map(inner -> new Object[] { outer, inner }))问题总是有一个 Tuple 类来保存inner和outer。因为它们都是Object,所以我们可以滥用数组...总而言之:保持for循环。 -
好的,谢谢 Pillar 和 Tunaki。有点糟糕,没有一种更简洁的方式来编写它。
标签: java java-stream