【发布时间】:2016-07-13 08:30:53
【问题描述】:
如何使用 Java-8 流/lambdas 找到按键映射列表的平均值?
例子:
List<Map<String, Double>> users = Arrays.asList(
new HashMap<String, Double>()
{{
put("weight", 109.0);
put("height", 180.2);
}},
new HashMap<String, Double>()
{{
put("weight", 59.0);
put("height", 186.2);
}}
);
Map<String, Double> statistics =
//<MISSED CODE with lambdas> (?)
System.out.println(statistics);
//{weight=84.0, height=183.1)
使用旧的好 foreachs 非常简单,我想知道是否可以使用 lambdas 来实现。我需要它的原因是我将使用 Apache Spark,而 Java-8 lambdas 将是一种更标准的方法。
【问题讨论】:
-
您创建地图只是为了保留 2 个值吗?
-
好吧,其实它不是map,而是scala lib的Tuple4。目前有 4 个值,所以由于即将发生的变化,情况并非如此
-
@Bogdan 为什么在使用 Scala 时要求 Java 解决方案?
-
@AndrewTobilko 关于您(已删除)的答案:它在正确的轨道上,但它必须保持运行总和和计数 n 顺序才能仅在最后进行除法。标识值为 (0.0, 0.0, 0)。这也启用了并行合并。这就是DoubleSummaryStatistics 的工作原理,尽管它更复杂,因为它使用补偿求和来提高准确性。
-
@Flown :我使用的是一些 Scalas 库,而不是 Scala
标签: java lambda java-8 java-stream