如何对java 8流中的对象列表求和

时间:2014-06-27 18:40:57

标签: java list java-8 java-stream

在C#中我有这个

List<Learner> Learners;
double learnerSum = this.Learners.Sum(learner => learner.Predicted * learner.Alpha);

我想在java 8中做同样的事情。我得到了

double learnerSum = this.Learners.stream()...

似乎我需要一个reduce,但所有的例子都在简单的整数数组上。我错过了什么?

2 个答案:

答案 0 :(得分:4)

您可以从DoubleStream创建Stream,并使用方法sum获取总和。

double learnerSum = Learners.stream()
    .mapToDouble(l -> l.Predicted * l.Alpha).sum();

答案 1 :(得分:0)

除非有更好的解决方案,否则这似乎有效。

Learners.stream().collect(Collectors.summingDouble(learner -> learner.Predicted * learner.Alpha ));