Java 8 Lambdas - 按位 AND 操作
2022-09-03 03:17:21
我目前正在解决在Java 8中使用Lambdas使用按位运算的循环转换问题。
给定一组复杂条目,循环需要遍历所有条目并对其调用给定的方法(方法返回布尔值)。之后,返回结果。
换句话说,我需要在所有条目上调用该方法并存储结果。这背后的原因是每个条目独立执行复杂的操作,必须执行。最终结果是结果的组合。
代码片段:
boolean areAllSuccessful = true;
for (SomeEntry entry : entries) {
areAllSuccessful = areAllSuccessful & entry.doComplexAction(); // keep calling the method on other entries regardless of the result.
}
return areAllSuccessful;
问题在于 Java 8 中的 Lambda 函数通常执行短路操作(一旦检测到错误条目,“循环”就会中断并返回错误结果)。
到目前为止,我最好的解决方案是使用map/filter/count组合:
return entries
.stream()
.map(entry -> entry.doComplexAction())
.filter(result -> result == false)
.count() > 0
有没有更聪明/更清洁的方法可以做到这一点?
谢谢!