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