scala - 如何按升序对Scala映射进行排序?
问题描述
我有一张这样的地图:
var map:Map[String, Double] = Map(
"1" -> 4.6,
"2" -> 2.1,
"3" -> 3.4,
"4" -> 0.3
)
我想按值按升序对其进行排序,以便在打印地图中的每个键值对后得到以下输出:
(4,0.3)
(2,2.1)
(3,3.4)
(1,4.6)
我怎样才能做到这一点?显然 sorted 方法不存在,所以我必须将 Map 转换为另一种数据类型并从那里开始工作。
解决方案
只需将 Map 转换为 List 并使用sortBy
Double (for Scala 2.13
+) 的 orderer 应用,如下所示:
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))
推荐阅读
- angular - 如何实现带有角度子菜单的侧面导航?
- c# - 为从 GIT 克隆的项目添加新类和文件夹后,Visual Studio 和项目看不到新类/文件夹等
- php - 如何安装学说/mongodb-odm-bundle?
- matlab - 使用matlab绘图时如何使图例中的标记变小
- powershell - 在powershell中交换行与列
- django - 如何在django中删除所有用户并重置用户表的主键?
- reactjs - Storybook: ReferenceError: jest is not defined
- reporting-services - 如何使用 Java 和 URL/REST 下载 SSRS PDF 报告?
- java - 如何限制通量中的元素数量
- node.js - 为什么我总是收到这个错误“gyp ERR!stack”NodeJS?