映射到 Scala 中的列表 [Tuple2] - 删除重复项?

Map to List[Tuple2] in Scala - removes duplicates?

我正在尝试将地图转换为元组列表,给定如下地图

Map("a"->2,"a"->4,"a"->5,"b"->6,"b"->1,"c"->3)

我想要这样的输出

List(("a",2),("a",4),("a",5),("b",6),("b",1),("c",3))

我尝试关注

val seq = inputMap.toList  //output (a,5)(b,1)(c,3)

var list:List[(String,Int)] = Nil 
   for((k,v)<-inputMap){
       (k,v) :: list
   }  //output (a,5)(b,1)(c,3)

为什么要删除重复项?我没有看到其他以 "a" 作为键的元组。

问题出在 Map,它的键是 Set,所以你不能有两次相同的键。这是因为 Maps 是字典,它被用来通过它的键访问一个值,所以键必须是唯一的。因此,构建器仅保留使用键 "a".

给出的最后一个值

顺便说一下,Map 已经有一个方法 toList,它完全符合您实施的要求。

那是因为 Map 不允许重复键:

val map = Map("a"->2,"a"->4,"a"->5,"b"->6,"b"->1,"c"->3) 
println(map) // Map(a -> 5, b -> 1, c -> 3)

由于地图有重复的键,它会在创建地图时删除重复的条目。

Map("a"->2,"a"->4,"a"->5,"b"->6,"b"->1,"c"->3)

它会变成,

Map(a -> 5, b -> 1, c -> 3)

所以会在short map上进行其他操作