Jaki jest najlepszy sposób na znalezienie najczęstszego/wspólnego elementu w kolekcji? Na przykład:Odnajdywanie najczęściej występującego/wspólnego elementu w kolekcji?
list = List(1, 3, 4, 4, 2)
list.mostCommon // => 4 !! This is what I want !!
Hmm .. Co można zrobić, to zrobić groupBy
a potem map
je length
, a następnie wybierz jedną z największych. Więc wtedy dostanie:
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
A potem w końcu wybrać klawisz (4
), który mapuje do najwyższego numeru (2
). (zagnieżdżone pytanie: jaki jest najlepszy sposób na zrobienie tego?). Ale wydaje się, że za tak prostą operację jest dużo pracy ...?
Czy istnieje lepszy/bardziej idiomatyczny sposób na zrobienie tego?
zagnieżdżona odpowiedź: użyć 'maxBy'. – senia
Pamiętaj, że może istnieć więcej niż jedna wartość, która jest maksymalna. W takim przypadku możesz filtrować mapę według maksymalnej znalezionej wartości. –