Scala Iterable[(String, Long)] 到 SortedMap[String,Long] 或 TreeMap[String, Long] 按值降序排序

Scala Iterable[(String, Long)] to SortedMap[String,Long] or TreeMap[String, Long] sorted in decreasing order of value

object Test extends App {
 val i: Iterable[(String, Long)] = List(("a", 1), ("b", 2))
  val sortedMap: SortedMap[String, Long] = i.toList.sortBy(_._2)
}

我不想将 Iterable 转换为 List/Array 等,因为它来自 jdbc 查询。

你不能那样做。 SortedMap 按键而不是值排序。 如果你想要它按值排序,你必须使用ListMap,并且不能避免转换为List

 ListMap(i.toList.sortBy(-_._2):_*)

转换为列表并没有太多错误,因为无论如何您都将整个内容加载到内存中。这也比一次构建一个元素的树更快。