如何为任何可订购的T按降序创建[T,Int]的有序列表?

时间:2016-12-16 20:20:11

标签: scala frequency

我查看this page,了解如何按原始列表中出现的项目计数的降序创建地图项目列表。我必须为一堆不同类型的列表执行此操作:StringIntShortFloatByte,...

我可以写:

def freqA(a: List[String]): ListMap[String, Int] =
  ListMap(a.groupBy(i => i).mapValues(_.size).toSeq.sortWith(_._2 > _._2):_*)

def freqB(a: List[Int]): ListMap[Int, Int] =
  ListMap(a.groupBy(i => i).mapValues(_.size).toSeq.sortWith(_._2 > _._2):_*)

...

但我只想用类型T写一次。我以为我记得如何做到这一点,但我正在掏空。我希望这对某人来说很容易。

1 个答案:

答案 0 :(得分:0)

没关系,我明白了。谢谢你斯卡拉星期五下午没那么努力:

def freqB[T](a: List[T]): ListMap[T, Int] =
    ListMap[T, Int](a.groupBy(i => i).mapValues(_.size).toSeq.sortWith(_._2 > _._2):_*)