短いバージョン:
keys.distinct.sortBy(keys count _.==).reverse
ただし、これは特に効率的ではありません。このgroupBy
バージョンはパフォーマンスが向上するはずですが、改善できる可能性があります。
keys.groupBy(identity).toSeq.sortBy(_._2.size).map(_._1)
reverse
を宣言することで、最初のバージョンの を取り除くこともできますOrdering
。
val ord = Ordering by (keys count (_: String).==)
keys.distinct.sorted(ord.reverse)
reverse
このバージョンOrdering
では、オリジナルとは反対の方法で動作する新しいものを生成するだけであることに注意してください。このバージョンでは、パフォーマンスを向上させる方法も提案されています。
val freq = collection.mutable.Map.empty[String, Int] withDefaultValue 0
keys foreach (k => freq(k) += 1)
val ord = Ordering by freq
keys.distinct.sorted(ord.reverse)