无法使用中断条件返回lambda表达式中的值



我正在尝试使用java8 lambda表达式编写编码问题。但当我要跳出这个循环时,我就被困住了。注意:我知道break不能在lambda表达式内使用。我试着用findAny(),但不知道如何在我的情况下使用它。

final boolean []flag = {true};
IntStream.range(0,res.length).filter((i)->{
if(res[i]>0){
flag[0]=false;
break;
}
else{
flag[0]=true;
}
});
return flag[0];
}

您可以使用下面的构造来检查res中是否至少有一个元素的值大于0:

IntStream.range(0, res.length).filter(i -> res[i] > 0).findAny().isPresent();

尝试使用anyMatch(),它在第一个结果匹配条件时返回true-如果没有则返回false:

boolean match = IntStream.range(0, res.length).anyMatch(i -> res[i] > 0);
flag[0] = match;
return flag[0];

最新更新