Come classificare uno scala.collection.Map [java.lang.String, Int] con i suoi valori (quindi sull'Int)? Qual è un modo breve ed elegante per farlo?come ordinare una scala.collection.Map [java.lang.String, Int] dai suoi valori?
33
A
risposta
55
A seconda di ciò che il tipo di raccolta risultato atteso è (SortedMap
s sono ordinati sui tasti), si potrebbe usare qualcosa di simile:
Map("foo"->3, "raise"->1, "the"->2, "bar"->4).toList sortBy {_._2}
risultato sarebbe l'elenco delle coppie chiave/valore in ordine di valore:
List[(java.lang.String, Int)] = List((raise,1), (the,2), (foo,3), (bar,4))
C'è un tipo di mappa che mantiene l'ordine originale, ListMap
, se si applica questo, si dispone di una mappa di nuovo:
import collection.immutable.ListMap
ListMap(Map("foo"->3, "raise"->1, "the"->2, "bar"->4).toList.sortBy{_._2}:_*)
Poi ci sono:
scala.collection.immutable.ListMap[java.lang.String,Int] = Map((raise,1), (the,2), (foo,3), (bar,4))
(Scala 2,8)
+10, seriamente utile, ListaMappa conserva ordine post-List-sorta – virtualeyes
che dire di ordine decrescente? – vefthym
@vefthym 'Map (" foo "-> 3," raise "-> 1," the "-> 2," bar "-> 4) .toList sortWith {_._ 2> _._ 2}' –