我有一个像下面这样的元组列表
List((a,1), (a,2), (b,2), (b,1))
我想从上面的列表中创建如下所示的列表
List((a,2), (b,2))
只有第一个元素和第二个元素的MAX。我怎么能这么简洁地做到这一点?
答案 0 :(得分:1)
由于您只需要具有相同值的第一个元素以及相应的第二个元素的最大值,因此将问题重新表述为for every distinct 1st element in the tuple list, list the max 2nd element
没有区别:
val l = List(("a",1), ("a",2), ("b",2), ("b",1))
l.groupBy(_._1).
mapValues( _.map(_._2).max ).
toList
// res1: List[(String, Int)] = List((b,2), (a,2))