Q
斯卡拉地圖排序
23
A
回答
57
一種方法是使用scala.collection.immutable.TreeMap,它總是通過關鍵字排序:
val t = TreeMap("01" -> List(34,12,14,23), "11" -> List(22,11,34))
//If you have already a map...
val m = Map("01" -> List(34,12,14,23), "11" -> List(22,11,34))
//... use this
val t = TreeMap(m.toSeq:_*)
你可以將其轉換爲一個序列或列表和排序它,太:
//by specifying an element for sorting
m.toSeq.sortBy(_._1) //sort by comparing keys
m.toSeq.sortBy(_._2) //sort by comparing values
//by providing a sort function
m.toSeq.sortWith(_._1 < _._1) //sort by comparing keys
有很多的可能性,每種方式在某種情況下或多或少方便。
15
如前所述,默認Map
類型是無序的,但總有SortedMap
import collection.immutable.SortedMap
SortedMap("01" -> List(34,12,14,23), "11" -> List(22,11,34))
雖然我猜你不能使用,因爲我認識到這一點功課,並懷疑您的地圖是結果的一組操作。所以,你必須創建一個空的SortedMap,並添加值:
val unsorted = Map("01" -> List(34,12,14,23), "11" -> List(22,11,34))
val sorted = SortedMap.empty[String, List[Int]] ++ unsorted
//or
val sorted = SortedMap(unsorted.toSeq:_*)
或者,如果你不拘泥於Map
界面,你可以將其轉換爲一個元組的序列。請注意,只有在鍵和值都具有定義的順序時,此方法纔有效。列表沒有定義默認順序,所以這不適用於您的示例代碼 - 我因此改爲創建其他數字。
val unsorted = Map("01" -> 56, "11" -> 34)
val sorted = unsorted.toSeq.sorted
,如果你可以先轉換您的列表,以一些其他類型(如字符串),這是最好的使用mapValues
更新完成,這可能是有用的:見Landei的答案,它展示瞭如何你可以提供一個定製的排序功能,使這種方法的工作。
相關問題
- 1. 排序就地陣列,斯卡拉
- 2. 斯卡拉排序選項
- 3. 斯卡拉:排序反轉
- 4. 斯卡拉快速排序
- 5. 斯卡拉ParArray排序
- 6. 斯卡拉訪問地圖序列
- 7. 斯卡拉按順序打印地圖
- 8. 斯卡拉:NodeSeq到地圖
- 9. 斯卡拉:在地圖
- 10. 斯卡拉地圖轉換
- 11. 斯卡拉,@ResponseBody和地圖
- 12. 斯卡拉地圖更新
- 13. 斯卡拉地圖+ =操作
- 14. 斯卡拉地圖伴侶
- 15. 斯卡拉地圖驗證
- 16. 斯卡拉地圖創建
- 17. Json地圖在斯卡拉
- 18. 斯卡拉圓形地圖
- 19. 斯卡拉地圖轉型
- 20. 凝結斯卡拉地圖
- 21. 斯卡拉地圖使用「_」
- 22. 新手:斯卡拉地圖
- 23. 斯卡拉地圖的foreach
- 24. 重新排序序列中斯卡拉
- 25. 斯卡拉 - 返回地圖功能在斯卡拉
- 26. 斯卡拉:包裝上的Java地圖後,斯卡拉轉換
- 27. 斯卡拉2.8和地圖視圖
- 28. 按日期排序斯卡拉
- 29. 斯卡拉:數組排序或設置
- 30. 斯卡拉播放地圖表格
您是否需要將結果作爲另一張地圖,或者您是否只希望在用於排序時忘記密鑰? – 2011-01-25 12:42:13
我需要結果在另一張地圖。 – 2011-01-25 12:42:54