Bạn sắp xếp một scala.collection.Map [java.lang.String, Int] bằng các giá trị của nó như thế nào (trên Int)? Một cách ngắn gọn và thanh lịch để làm điều đó là gì?cách sắp xếp một scala.collection.Map [java.lang.String, Int] theo giá trị của nó?
33
A
Trả lời
55
Tùy thuộc vào những gì các loại bộ sưu tập sản lượng dự kiến là (SortedMap
s đều được sắp xếp trên các phím), bạn có thể sử dụng một cái gì đó như thế này:
Map("foo"->3, "raise"->1, "the"->2, "bar"->4).toList sortBy {_._2}
Kết quả sẽ là danh sách các cặp khóa/giá trị được sắp xếp theo các giá trị:
List[(java.lang.String, Int)] = List((raise,1), (the,2), (foo,3), (bar,4))
có một loại đồ mà vẫn giữ được trật tự ban đầu, ListMap
, nếu bạn áp dụng điều này, bạn có một bản đồ một lần nữa:
import collection.immutable.ListMap
ListMap(Map("foo"->3, "raise"->1, "the"->2, "bar"->4).toList.sortBy{_._2}:_*)
Sau đó, bạn có:
scala.collection.immutable.ListMap[java.lang.String,Int] = Map((raise,1), (the,2), (foo,3), (bar,4))
(Scala 2,8)
+10, nghiêm túc hữu ích, ListMap giữ gìn trật tự thời hậu List-loại – virtualeyes
gì về thứ tự giảm dần? – vefthym
@vefthym 'Bản đồ (" foo "-> 3," nâng cao "-> 1," the "-> 2," bar "-> 4) .toList sortWith {_._ 2> _._ 2}' –