可选[值]正在打印

问题描述 投票:0回答:2
public static void main(String[] args) {
    
    printSumOfAllNumbersInList(List.of(12,45,34,22,56,65));
    printSumOfAllNumbersInListUsingFP(List.of(12,45,34,22,56,65));
}

private static void printSumOfAllNumbersInListUsingFP(List<Integer> list) {
    
    /*
     * Learning the use of reduce()
     */
    System.out.println(list.stream().reduce(PStructured01::printSum));
    
}

private static int printSum(int a,int b)
{
    int sum  =  a +b;
    return sum;
            
            
}
private static void printSumOfAllNumbersInList(List<Integer> list) {
    int sum = 0;
    for (Integer integer: list) {
        sum = sum + integer;
    }
    System.out.println(sum);
}}

我正在解决用例 - 打印所有列表数字的总和并返回总和。
我尝试使用传统方法,后来又尝试使用函数式方法来解决它。
但在功能方法期间,我得到的值 - 234 是正确的,但作为 - 可选[234]
有人可以解释一下原因吗

java functional-programming underscore-java
2个回答
0
投票

我在研究中做了这个,首先认为它有点不理解,但这是一个简单的概念

可选操作 = list.stream().reduce(PStructured01::printSum); op.ifPresent(System.out::println);


-1
投票
在这种情况下,Reduce 返回一个 OptionalInt,要检索它,您需要使用

OptionalInt.getAsInt()。你也可以这样做。

List<Integer> list = List.of(12,45,34,22,56,65);
int sum = list.stream().mapToInt(a->a).sum();
System.out.println(sum);

打印
234


© www.soinside.com 2019 - 2024. All rights reserved.