【问题标题】:Does Java-8 support product of elements of array [duplicate]Java-8是否支持数组元素的乘积[重复]
【发布时间】:2021-03-14 22:07:58
【问题描述】:

Java-8 提供如下流对数组求和,流是否支持product?如果 steam 不支持,有没有其他方法可以在不手动编写循环的情况下计算乘积?

int[] a = {1, 2, 3, 4};
int sum = IntStream.of(a).sum();

【问题讨论】:

    标签: java java-8


    【解决方案1】:

    sum 和其他只是特定reduce 调用的快捷方式。

    sum:返回此流中元素的总和。这是一个特殊情况 一个归约,相当于:

     return reduce(0, Integer::sum);
    

    Reduce:对该流的元素执行归约,使用 提供身份值和关联累积函数,以及 返回减少的值。

    然后你可以这样写:

    int[] a = {1, 2, 3, 4};
    int prod = IntStream.of(a).reduce(1,(x,y)->x*y);
    

    【讨论】:

      【解决方案2】:

      尝试使用reduce 方法。如下所示:

       int product = IntStream.of(a)
           .reduce((a,b) -> a*b)
           .orElse(1); // fallback value if stream is empty
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-24
        • 2013-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        相关资源
        最近更新 更多