gpt4 book ai didi

Java 8 Lambdas - 按位与运算

转载 作者:太空狗 更新时间:2023-10-29 22:42:02 25 4
gpt4 key购买 nike

我目前正在处理使用 Java 8 中的 Lambdas 转换使用按位运算的循环的问题。

给定一组复杂的条目,循环需要遍历所有条目并对它们调用给定的方法(方法返回 boolean 值)。然后返回结果。

换句话说,我需要对所有条目调用该方法并存储结果。 这背后的原因是每个条目独立执行复杂的操作并且必须执行。最终结果是结果的组合。

代码片段:

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

有没有更聪明/更干净的方法来做到这一点?

谢谢!

最佳答案

这不应该是这样的吗:

boolean areAllSuccessful = entries.stream()
.map(entry -> entry.isSuccessful())
.reduce(Boolean.TRUE, Boolean::logicalAnd);

关于Java 8 Lambdas - 按位与运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42273590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com