Scala映射提取值重复的最大次数

Scala映射提取值重复的最大次数,scala,map,max,Scala,Map,Max,我有Map[String,String]所以键是不同的,但大多数值是重复的。 例如:Map[car->“这是一辆车”,truck->“这是一辆车”,fruit->“这是一个水果”] 所以它应该返回“这是一辆车”,因为它重复了两次。希望能有帮助 val j = x.groupBy(_._2) 然后 其中x是您的原始地图。第一个调用返回一个Map,然后您只需得到键值对,其中的值(Map,有max条目)不是最优雅的,但我的解决方案是这样的 val list = Map(car-> "This

我有
Map[String,String]
所以键是不同的,但大多数值是重复的。 例如:
Map[car->“这是一辆车”,truck->“这是一辆车”,fruit->“这是一个水果”]


所以它应该返回“这是一辆车”,因为它重复了两次。希望能有帮助

val j = x.groupBy(_._2)
然后


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

不是最优雅的,但我的解决方案是这样的

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
另一个解决方案

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

如果重复,是否应该返回
“这是一个水果”
?顺便说一下,您不需要定义自己的(t=>t)函数(从而添加一个类)——Predef为您定义了一个。这叫做“身份”。
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
 map.values.groupBy(t => t ).values.maxBy(_.size).head