Qual è il modo migliore per trovare l'elemento più frequente/comune in una raccolta? Per esempio:Trovare l'elemento più frequente/comune in una raccolta?
list = List(1, 3, 4, 4, 2)
list.mostCommon // => 4 !! This is what I want !!
Hmm .. Che cosa si potrebbe fare è di fare un primo groupBy
e poi li map
da length
, e quindi selezionare il più grande. Allora si otterrebbe:
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
E poi, alla fine, scegliere il tasto (4
) che mappa il numero più alto (2
). (domanda nidificata: qual è il modo migliore per farlo?). Ma sembra un sacco di lavoro per un'operazione così semplice ..?
Esiste un modo migliore/più idiomatico per farlo?
risposta nidificato: usare 'maxBy'. – senia
Ricorda che potrebbe esserci più di un valore che è il massimo, nel qual caso puoi filtrare la mappa in base al valore massimo trovato. –