33 votes

comment trier un scala.collection.Map [java.lang.String, Int] par ses valeurs?

Comment classeriez-vous un scala.collection.Map [java.lang.String, Int] par ses valeurs (ainsi sur l'Int)? Quelle est la manière courte et élégante de procéder?

55voto

mkneissl Points 2786

Selon ce que la sortie attendue de la collecte est de type (SortedMaps sont triés sur les touches), vous pouvez utiliser quelque chose comme ceci:

Map("foo"->3, "raise"->1, "the"->2, "bar"->4).toList sortBy {_._2}

Le résultat serait la liste de paires clé/valeur triées par ordre de valeur:

List[(java.lang.String, Int)] = List((raise,1), (the,2), (foo,3), (bar,4))

Il est un type de Carte qui conserve l'original de l'ordonnance, ListMap, si vous appliquez ce, vous avez une carte de nouveau:

import collection.immutable.ListMap                                          
ListMap(Map("foo"->3, "raise"->1, "the"->2, "bar"->4).toList.sortBy{_._2}:_*)

Ensuite, vous avez:

scala.collection.immutable.ListMap[java.lang.String,Int] = Map((raise,1), (the,2), (foo,3), (bar,4))

(Scala 2.8)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X