Java-8是否支持数组元素的产品

Kai*_*Liu -1 java java-8

Java-8提供了对数组求和的流,如下所示,流是否支持product?如果蒸汽不支持,还有其他方法来计算产品而无需手动编写循环吗?

int[] a = {1, 2, 3, 4};
int sum = IntStream.of(a).sum();
Run Code Online (Sandbox Code Playgroud)

Lin*_*ica 5

reduce方法试试。像下面这样:

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


Jea*_*nès 5

sum和其他人只是特定reduce电话的捷径.

sum:返回此流中元素的总和.这是减少的特殊情况,相当于:

 return reduce(0, Integer::sum);
Run Code Online (Sandbox Code Playgroud)

Reduce:使用提供的标识值和关联累加函数,对此流的元素执行减少,并返回减少的值.

然后你可以这样写:

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