0

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

所以它应该返回"This is a car",因为它重复了两次。

4

4 回答 4

6

我做了这样的事情。希望能帮助到你。

val j = x.groupBy(_._2)

然后

j.maxBy(_._2.size)

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

于 2013-03-08T06:08:35.203 回答
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))
于 2013-03-08T06:12:11.080 回答
1

另一种解决方案

 map.values.groupBy(t => t ).values.maxBy(_.size).head
于 2013-03-08T10:50:34.070 回答
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
于 2013-03-08T06:22:16.830 回答