Подтвердить что ты не робот

Как сортировать scala.collection.Map [java.lang.String, Int] по его значениям?

Как бы вы отсортировали scala.collection.Map [java.lang.String, Int] по его значениям (так на Int)? Что такое короткий и элегантный способ сделать это?

4b9b3361

Ответ 1

В зависимости от того, какой тип ожидаемого выходного типа (SortedMap сортируется по клавишам), вы можете использовать что-то вроде этого:

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)