使用Stream.reduce

时间:2019-01-11 09:56:47

标签: java java-8 java-stream reduce

使用Stream.reduce反转求和不正确,这是怎么回事?

double[] array = {1.0, 2.0};
double iunversionSum = Arrays.stream(array).reduce(0.0, (a, b) -> Double.sum(1.0 / a, 1.0 / b));

输出为0.5,但预期为1.5(1/1 + 1/2)

2 个答案:

答案 0 :(得分:6)

我认为使用map()可能会更简单。

double inversionSum = Arrays.stream(arr).map(val -> 1 / val).sum();

答案 1 :(得分:0)

reduce中的错误是:Double.sum(1.0 / a,1.0 / b),从0.0开始的序列。现在检查为什么您的结果是0.5。

如果要使用reduce,请使用Double.sum(a,1.0 / b)。