java - 如何在 Java 中使用 forEach 和 lambda 表达式求和?

标签 java lambda java-8

<分区>

以下代码段无法编译。如何使用 forEach 找到 sum,如下所示?

private int Sum(ArrayList<Integer> inputs) {
    int sum = 0;

    inputs.stream().forEach(x -> sum += x);

    return sum;
}

最佳答案

这应该可以解决问题:

private int Sum(ArrayList<Integer> inputs) {

  return inputs.stream().mapToInt(Integer::intValue).sum();

}

编辑:

使用for-each 的问题在于它是一个终端操作,这意味着它不会产生另一个中间流供我们处理。更好的方法是使用 mapToInt 生成一个 IntStream,我们可以在上面轻松找到总和。

关于java - 如何在 Java 中使用 forEach 和 lambda 表达式求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52795031/

相关文章:

java - Android Webview : Cannot call determinedVisibility() - never saw a connection for the pid

c++ - 这些函数为什么不衰减到函数指针?

java - Guava.Objects.hashCode 与 Java.Objects.hashCode

java - 如何解决 `jack.import.type.policy` 的区域设置问题?

java - 我可以使用 Apache Camel 调用 Web 服务并返回响应吗?

java - Apache Beam 使用多个表时有多少写入次数

c++ - 从 cpprest lambda 表达式访问自动变量

lambda - Prolog - 将一个列表与一个元素相乘,结果带有一个奇怪的尾部?

java - 在 java 8 中删除 JDBC ODBC 桥

java - 如何在 javafx 2.4.0 中转换停止后触发事件?