Scala map提取值重复最多次数

时间:2013-03-08 05:53:54

标签: scala map max

我有Map[String,String]所以键是不同的,但大多数值都会重复。 例如:Map[car-> "This is a car",truck-> "This is a car", fruit ->"This is a fruit"]

因此它应该返回"This is a car",因为它会重复两次。

4 个答案:

答案 0 :(得分:6)

我做了这样的事。希望它有所帮助。

val j = x.groupBy(_._2)

然后

j.maxBy(_._2.size)

其中x是您的原始地图。第一个调用,返回一个Map,然后你只需得到键值对(map,有max条目)

答案 1 :(得分:3)

val m1 = Map("this" -> "that", "what" -> "that", "who" -> "me", "you" -> "who")
m1.groupBy(_._2).maxBy(_._2.size)
res0: ... = (that,Map(this -> that, what -> that))

答案 2 :(得分:1)

另一种解决方案

 map.values.groupBy(t => t ).values.maxBy(_.size).head

答案 3 :(得分:0)

不是最优雅的,但我的解决方案就像

val list = Map(car-> "This is a car",truck-> "This is a car", fruit ->"This is a fruit")

list.map{
  case (k,v) => if(list.filter{case (key,value)=> value==v }.size>1)v
}.toSet