如何获得数组[(Int,Double)]的每个键的最大值,然后聚合它们

时间:2016-02-29 02:45:17

标签: arrays scala

我们如何最有效地获取数组[(Int,Double)]的最大值然后将其聚合得到总和

示例:

  Array[(Int, Double)] = Array((0,2.0), (1,1.0), (1,1.0), (2,2.0), (2,1.0))

聚合:7

结果

    Array[(Int, Double)] = Array((0,2.0), (1,1.0), (2,2.0))

聚合:5

1 个答案:

答案 0 :(得分:2)

这可能不是最有效的,但它很简洁:

val xs = Array((0,2.0), (1,1.0), (1,1.0), (2,2.0), (2,1.0))
val maxs = xs.groupBy(_._1).values.map{_.maxBy(_._2)}
//> maxs  : Iterable[(Int, Double)] = List((2,2.0), (1,1.0), (0,2.0))
val aggregate = maxs.map(_._2).sum
//> aggregate  : Double = 5.0
相关问题