コレクション内で最も頻繁に/共通の要素を見つける最良の方法は何ですか?たとえば:コレクション内で最も頻繁に/共通の要素を見つけることはできますか?
list = List(1, 3, 4, 4, 2)
list.mostCommon // => 4 !! This is what I want !!
うーん...何1が行う可能性はlength
によってそれらgroupBy
最初にしmap
を行い、その後、最大のものを選択することです。だから、あなたが得るでしょう:
Map(1 -> List(1), 4 -> List(4, 4), 3 -> List(3), 2 -> List(2))
(...)
Map(1 -> 1, 4 -> 2, 3 -> 1, 2 -> 1) // mapped by length. 4 -> 2 since there's two 4s
そして最後に、最大数(2
)にマップキー(4
)を選択します。 (ネストされた質問:これを行う最善の方法は何ですか?)しかし、それはそのような単純な操作のための多くの仕事のように思えます..?
これを行うにはより良い/より慣用的な方法がありますか?
ネストされた答え: 'maxBy'を使用何が欲しいのは、リスト上のmaxByを使用して、そのようなリストを参照するためのいくつかの方法です。 – senia
最大値が複数ある可能性があります。この場合、見つかった最大値でマップをフィルタリングできます。 –