2010-06-04 6 views

Répondre

55

En fonction de ce type de collecte de sortie prévue est (SortedMap s sont classés sur les touches), vous pouvez utiliser quelque chose comme ceci:

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

Résultat serait la liste des paires clé/valeur triés par ordre alphabétique valeur:

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

Il y a un type de carte qui conserve l'ordre original, ListMap, si vous appliquez cela, vous avez une carte à 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)

+0

+10, sérieusement utile, ListeCarte préserve l'ordre post-List tri – virtualeyes

+0

Qu'en est-ordre décroissant? – vefthym

+0

@vefthym 'Map (" foo "-> 3," raise "-> 1," the "-> 2," barre "-> 4) .toList sortWith {_._ 2> _._ 2}' –

Questions connexes