Stream中是否有办法获得SUM作为中间操作

问题描述 投票:0回答:1

因为Sum, Collect & reduce是终端操作。是否可以比较流中sum的结果以从流中返回布尔值。

我在下面的代码段中写道,以找到Perfect Number。如果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.
    } 

是否有一种方法可以在此流中实现这一点,或者我必须分别比较结果

java-8 mapreduce java-stream
1个回答
0
投票

您可以使用

.reduce(Integer::sum).orElse(0) == number;
© www.soinside.com 2019 - 2024. All rights reserved.