gpt4 book ai didi

java - Stream 中有没有办法将 SUM 作为中间操作

转载 作者:行者123 更新时间:2023-12-02 11:11:30 26 4
gpt4 key购买 nike

由于Sum、Collect 和reduce 是终端操作。有没有办法比较流中 sum 的结果以从流中返回 boolean 值。

我编写了下面的代码片段来查找完美数字。它缺少的只是最后一行来比较SUM =给定数字

    private static boolean isPerfectNumber(int number) {
return IntStream.range(1, number / 2 + 1)
.filter(e -> number % e == 0)
.reduce(Integer::sum)
.equals(number); // This Line won't give correct result because I'm comaring an OptionalInt to a Integer instead of optional value.
}

有没有办法在这个流中实现这一点,或者我必须单独比较结果

最佳答案

使用 IntStream#sum,它本身使用重载的 reduce API:

return IntStream.range(1, number / 2 + 1)
.filter(e -> number % e == 0)
.sum() == number; // same as reduce(0, Integer::sum)

执行orElse,然后比较整数值 -

.reduce(Integer::sum).orElse(0) == number;

OptionalInt中执行equals

.reduce(Integer::sum)
.equals(OptionalInt.of(number))

关于java - Stream 中有没有办法将 SUM 作为中间操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59709931/

26 4 0