33

scala.collection.Map[java.lang.String, Int] をその値 (Int など) でどのようにソートしますか? それを行うための短くてエレガントな方法は何ですか?

4

1 に答える 1

55

予想される出力コレクション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))

元の順序を保持する Map タイプがあり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))

(スカラ2.8)

于 2010-06-04T09:56:14.380 に答える