因为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.
}
是否有一种方法可以在此流中实现这一点,或者我必须分别比较结果
您可以使用
.reduce(Integer::sum).orElse(0) == number;