stream sum on list of objects

In C# I had this

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

I want to do the same in java 8. I get as far as

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

It seems i need a reduce but all the examples are on simple arrays of integers. what am i missing?

2 comments · 67% upvoted · other discussions

comments

Master_Rux [OP]

This seems to work unless someone has a better solution.

Learners.stream().collect(Collectors.summingDouble(learner -> learner.Predicted * learner.Alpha ));
Master_Rux [OP]

Better answer

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