Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java8:“;翻译;将旧ForEach方法转换为Lambda/Stream_Java_Foreach_Lambda_Java 8_Java Stream - Fatal编程技术网

Java8:“;翻译;将旧ForEach方法转换为Lambda/Stream

Java8:“;翻译;将旧ForEach方法转换为Lambda/Stream,java,foreach,lambda,java-8,java-stream,Java,Foreach,Lambda,Java 8,Java Stream,经过数小时毫无希望的搜索,我决定提出一个问题。 我真的没有找到任何方法可以将这种老式的编码方式转换为stream/lambda 也许有人能解释给我听。谢谢 public double getSum() { double sum = 0; for (Product product : productList) { sum += product.getPrice(); } return sum; } 您可以使用以下选项: double sum = p

经过数小时毫无希望的搜索,我决定提出一个问题。 我真的没有找到任何方法可以将这种老式的编码方式转换为stream/lambda

也许有人能解释给我听。谢谢

public double getSum() {
    double sum = 0;
    for (Product product : productList) {
        sum += product.getPrice();
    }
    return sum;
}

您可以使用以下选项:

double sum = productList.stream().mapToDouble(product -> product.getPrice()).sum();

或者,使用方法引用而不是lambda表达式:mapToDouble(Product::getPrice)注意,与OP代码相比,您可能会得到稍微不同的结果,因为流版本实现了Kahan求和,它可以抵抗错误累积。@Tagir Valeev:使用
double
s,您总是可以得到差异,即使使用相同的代码,作为旁白,最好不要使用double作为float来表示货币。看见