java - 在 forEach Java 8 里面积累

标签 java java-8

如何在 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();

关于java - 在 forEach Java 8 里面积累,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65364933/

相关文章:

java - com.sun.jdi.InterfaceType 中缺少 invokeMethod

Java,当ServerSocket.accept()接受客户端时如何继续运行?

java - 如何使用 DirectoryStream.Filter 过滤隐藏文件

java - ProcessBuilder 无法运行路径中包含空格的 bat 文件

CRC 16计算的Java代码

java - 检测带有 Java Optional 的 Hashmap 是否有空值?

带有两个列表的 Java 8 流

java - 解析日期时无法从 TemporalAccessor 获取 ZonedDateTime

java - 无法匹配我的正则表达式

java - 选择更有利可图的流结果