我们如何最有效地获取数组[(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
答案 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