Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala地图+;=五对运算符_Scala_Append_Operators_Ordered Map - Fatal编程技术网

scala地图+;=五对运算符

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的表。

我在将对附加到现有映射时遇到问题。当我到达第五对贴图时,贴图会自动重新排序。4对的顺序是正确的,但一旦加上第5对,它就会自动移动。请参见下面的示例(假设我一次构建一对4对映射):

添加的第五个元素跳到地图的前面,并移动其他元素。有没有办法使元素保持有序(1、2、3、4、5)


谢谢

默认情况下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)