gpt4 book ai didi

scala - 按值对 map 进行排序

转载 作者:行者123 更新时间:2023-12-04 17:02:55 25 4
gpt4 key购买 nike

我有 List[(String,String)]我需要按第二个值对它们进行排序并返回一张 map

我做了以下工作:

val newMap = list.sortBy(_._2).foldLeft(Map.empty[String, String]) {
(map, key) ⇒ map + (key._1 → key._2)
}

列表是 List[(String,String)]
但是返回的 map 没有排序!!

最佳答案

默认 Map实现是基于哈希的,它们不保留顺序。而是使用 scala.collection.mutable.LinkedHashMap :

val newMap = list.sortBy(_._2).foldLeft(new LinkedHashMap[String, String]) {
(map, key) => map += (key._1 -> key._2)
map
}

正如@Rex Kerr 所建议的, scala.collection.immutable.ListMap可能是目标类型的更好选择:
val newMap = list.sortBy(_._2).foldLeft(new ListMap[String, String]) {
(map, key) => map + (key._1 -> key._2)
}

或者(再次完整的学分应该转到@Rex Kerr):
val newMap = new ListMap() ++ list.sortBy(_._2)

但是,您真正想要实现的是什么?看起来您可能选择了错误的数据结构...

关于scala - 按值对 map 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9966126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com