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

时间:2019-04-05 13:24:14

标签: java scala scala-collections

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查询。

1 个答案:

答案 0 :(得分:1)

您不能那样做。 SortedMap按键而不是值排序。 如果要按值对它进行排序,则必须使用ListMap,并且不可避免地要转换为List

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

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