在forEachJava8里面积累

如何在 forEach 中累积?这是我的代码:

public Double accumulate() {
        Double accum = 0d;

        numbers.stream().forEach(p-> {

            // if condition
                accum = accum + numbers.getAmount();
            // else
                accum = accum + numbers.getAmountWithInterest();
        });

        return accum;
    }

也许我应该使用 map 而不是 forEach,我尝试了几件事,但没有奏效。谢谢

回答

我认为在使用 lambda 时产生副作用不是一个好主意。这是混合函数式编程和命令式编程的一种糟糕方式。你可以通过

numbers.stream().mapToInt(p-> {
    // if condition
        return numbers.getAmount();
    // else
        return numbers.getAmountWithInterest();
}).sum();

  • Should be `map`, not `mapToInt`.

以上是在forEachJava8里面积累的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>