sortBy
возвращает тот же тип коллекции, который в вашем случае является картой, поэтому вы не можете выполнить sortBy, потому что карта неупорядочена. Поэтому необходимо преобразование в другой тип коллекции (в данном случае в SortedMap
):
val m = Map("01" -> List(34,12,14,23), "11" -> List(22,11,34))
implicit val mOrd: Ordering[String] = (s1, s2) => s1.toInt - s2.toInt
m.to(SortedMap) //return: TreeMap(01 -> List(34, 12, 14, 23), 11 -> List(22, 11, 34))
Обратите внимание, что этот Ordering[String]
переопределит все упорядочения для строки в той же области. Вы также можете передать его явно как параметр, но он немного более подробный:
val m = Map("01" -> List(34,12,14,23), "11" -> List(22,11,34))
m.to(SortedMap.sortedMapFactory(((s1,s2) => s1.toInt - s2.toInt): Ordering[String]))