【问题标题】:How to sort Scala maps by value in ascending order?如何按升序对Scala映射进行排序?
【发布时间】:2020-03-01 08:22:17
【问题描述】:

我有一张这样的地图:

var map:Map[String, Double] = Map(
 "1" -> 4.6, 
 "2" -> 2.1, 
 "3" -> 3.4, 
 "4" -> 0.3
)

我想将其按值升序排序,以便在打印map中的每个键值对后得到如下输出:

(4,0.3)
(2,2.1)
(3,3.4)
(1,4.6)

我该怎么做?显然 sorted 方法不存在,所以我必须将 Map 转换为另一种数据类型并从那里开始工作。

【问题讨论】:

    标签: scala sorting dictionary key-value


    【解决方案1】:

    只需将 Map 转换为 List 并将 sortBy 与 Double 的 orderer 一起应用(对于 Scala 2.13+),如下所示:

    implicit val orderer = Ordering.Double.TotalOrdering
    
    myMap.toList.sortBy(_._2)
    // res1: List[(String, Double)] = List((4,0.3), (2,2.1), (3,3.4), (1,4.6))
    

    【讨论】:

    • (_._2) 是什么意思?
    • 这是x => x._2 的简写形式,表示您要按每个元组的第二个元素对元组2 的列表进行排序。
    猜你喜欢
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 2019-12-27
    • 1970-01-01
    相关资源
    最近更新 更多