Как бихте сортирали scala.collection.Map[java.lang.String, Int] по неговите стойности (така на Int)? Какъв е краткият и елегантен начин да направите това?
как да сортирате scala.collection.Map[java.lang.String, Int] по неговите стойности?
Отговори (1)
В зависимост от очаквания тип събиране на изход (SortedMap
s са сортирани по ключовете), можете да използвате нещо подобно:
Map("foo"->3, "raise"->1, "the"->2, "bar"->4).toList sortBy {_._2}
Резултатът ще бъде списъкът с двойки ключ/стойност, сортирани по стойността:
List[(java.lang.String, Int)] = List((raise,1), (the,2), (foo,3), (bar,4))
Има тип карта, който запазва оригиналния ред, ListMap
, ако приложите това, отново имате карта:
import collection.immutable.ListMap
ListMap(Map("foo"->3, "raise"->1, "the"->2, "bar"->4).toList.sortBy{_._2}:_*)
След това имате:
scala.collection.immutable.ListMap[java.lang.String,Int] = Map((raise,1), (the,2), (foo,3), (bar,4))
(Scala 2.8)
person
mkneissl
schedule
04.06.2010
+10, наистина полезен, ListMap запазва реда след сортирането на списъка
- person virtualeyes; 30.06.2012
какво ще кажете за низходящ ред?
- person vefthym; 17.03.2017
@vefthym
Map("foo"->3, "raise"->1, "the"->2, "bar"->4).toList sortWith {_._2 > _._2}
- person Travis Hegner; 20.07.2017