如上所述,默认的Map 类型是未排序的,但始终存在SortedMap
import collection.immutable.SortedMap
SortedMap("01" -> List(34,12,14,23), "11" -> List(22,11,34))
虽然我猜你不能使用它,因为我认识这个作业并且怀疑你的地图是 groupBy 操作的结果。所以你必须创建一个空的 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 的回答,该回答展示了如何提供自定义排序功能以使这种方法发挥作用。