Java8:“;翻译;将旧ForEach方法转换为Lambda/Stream
经过数小时毫无希望的搜索,我决定提出一个问题。 我真的没有找到任何方法可以将这种老式的编码方式转换为stream/lambda 也许有人能解释给我听。谢谢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
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来表示货币。看见