Scala是否有任何按值而不是键排序的集合?

del*_*ber 14 scala

例如,以下代码生成订单Stock1,Stock2,Stock3

var tm = TreeMap("Stock1" -> 4.2, "Stock3" -> 3.7, "Stock2" -> 5.9)
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是可以产生以下内容的集合或技术

Stock2,Stock1,Stock3代表价格降序

use*_*own 23

scala> val sorted1 = tm.toList.sortBy (_._2)                                                           
sorted1: List[(java.lang.String, Double)] = List((Stock3,3.7), (Stock1,4.2), (Stock2,5.9))

scala> val sorted2 = tm.toList.sortBy (_._1)
sorted2: List[(java.lang.String, Double)] = List((Stock1,4.2), (Stock2,5.9), (Stock3,3.7))
Run Code Online (Sandbox Code Playgroud)

还原sorted1,使其降序或sortWith:

scala> val sorted3 = tm.toList.sortWith (_._2 > _._2) 
sorted3: List[(java.lang.String, Double)] = List((Stock2,5.9), (Stock1,4.2), (Stock3,3.7))
Run Code Online (Sandbox Code Playgroud)

版本4,按-x(减去x)排序:

scala> val sorted4 = tm.toList.sortBy (-_._2)   
sorted4: List[(java.lang.String, Double)] = List((Stock2,5.9), (Stock1,4.2), (Stock3,3.7))
Run Code Online (Sandbox Code Playgroud)