【问题标题】:How do you sum on a list of objects in a java 8 stream你如何总结java 8流中的对象列表
【发布时间】:2014-06-27 18:40:57
【问题描述】:

在 C# 中我有这个

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

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

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

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

【问题讨论】:

    标签: java list java-8 java-stream


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这行得通,尽管“减少”收集器实际上只是用作另一个收集器的下游,例如 groupingBy。最好映射到 DoubleStream 并调用 sum()。
      猜你喜欢
      • 2015-07-13
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2020-08-06
      相关资源
      最近更新 更多