scala地图+;=五对运算符
我在将对附加到现有映射时遇到问题。当我到达第五对贴图时,贴图会自动重新排序。4对的顺序是正确的,但一旦加上第5对,它就会自动移动。请参见下面的示例(假设我一次构建一对4对映射): 添加的第五个元素跳到地图的前面,并移动其他元素。有没有办法使元素保持有序(1、2、3、4、5)scala地图+;=五对运算符,scala,append,operators,ordered-map,Scala,Append,Operators,Ordered Map,我在将对附加到现有映射时遇到问题。当我到达第五对贴图时,贴图会自动重新排序。4对的顺序是正确的,但一旦加上第5对,它就会自动移动。请参见下面的示例(假设我一次构建一对4对映射): 添加的第五个元素跳到地图的前面,并移动其他元素。有没有办法使元素保持有序(1、2、3、4、5) 谢谢默认情况下Scala的不可变。Map使用HashMap 发件人: 此类不保证地图的顺序;特别是,它不能保证订单在一段时间内保持不变 因此,映射实际上不是一个包含“a1”->1的表,而是一个包含哈希(“a1”)->1的表。
谢谢默认情况下Scala的
不可变。Map
使用HashMap
发件人:
此类不保证地图的顺序;特别是,它不能保证订单在一段时间内保持不变
因此,映射实际上不是一个包含“a1”->1
的表,而是一个包含哈希(“a1”)->1
的表。映射将根据密钥的哈希而不是您放入其中的密钥对其密钥进行重新排序
按照评论中的建议,使用LinkedHashMap
或ListMap
:
PS:您可能有兴趣阅读这篇文章:如果您想保持插入顺序,请查看以下内容。
scala> val a = Map("a1" -> 1, "a2" -> 1, "a3" -> 1, "a4" -> 1)
a: scala.collection.immutable.Map[String,Int] = Map(a1 -> 1, a2 -> 1, a3 -> 1, a4 -> 1)
scala> a += ("a5" -> 1)
scala> a
res26: scala.collection.immutable.Map[String,Int] = Map(a5 -> 1, a4 -> 1, a3 -> 1, a1 -> 1, a2 -> 1)