有一个任务需要重写一个带有嵌套条件的循环,以退出流上的循环:
for(int i; i < 500; i++){
// обработка коллекции
if(obj == 100){
break;
}
}
我写了这个:
public static List<DateBucket> bucketize() {
return LongStream.iterate(1, i -> i + 1).limit(500)
.mapToObj(i -> {
// логика;
})
.toList();
}
但是,我不明白如何将循环中的嵌套条件添加到流中。
或者如果你这样写,那么流就会无限地运行:
Stream.generate(() -> // логика)
.takeWhile(r -> r.getI() == 100)
.toList();
从所提供的代码片段来看,Stream API 上的解决方案应该如下所示,
takeWhile与提前终止循环的原始条件相比,应该有一个“相反”条件:if (x == 100) break;与以下内容相同while (x != 100) {...}: