首页 > 解决方案 > 组合 MAP 的键和值

问题描述

我正在尝试解决一个问题,我的结果格式为 Map[String, (Double,Double)]。

我想知道有没有办法将它转换为 Map[String, Double,Double] 因为我想按字符串对其进行排序?

更具体地说,我想将其排序如下:

("A1", (7.8,9.2))
("A2", (4.2,44.3))
("A11", (9,54.1))

如果我要使用 SortedMap 我会得到类似的东西:

("A1", (7.8,9.2))
("A11", (9,54.1))
("A2", (4.2,44.3))

这不是预期的结果。

PS:我想将地图转换为适当的格式,以便我可以申请:

sortBy((x:String)=>(x.substring(1).toInt))

非常感谢

标签: scalafunctional-programming

解决方案


据我了解,您想按键对地图进行排序。你可以这样做

val inputMap = Map(
A1->(7.8,9.2),
A11-> (9,54.1),
A2-> (4.2,44.3)
)
val outputMap = inputMap.toSeq.sortBy(_._1.split("A")(1).toInt).toList
println(outputMap) //List((A1,(7.8,9.2)), (A2,(4.2,44.3)), (A11,(9,54.1)))

前提是密钥始终具有与 A+number ex 相同的格式。“A5”有效 AA1 无效。

如果您希望您的答案作为元组(键,值)列表,您可以执行 outputMap.toSeq 或 toList。


推荐阅读