将使用"+"在地图中保留我的订单?没有权利?

Got*_*irl 1 scala scala-collections

scala>  var test2 : Map[String , String] = Map("a"->"b","c"->"d")
test2: Map[String,String] = Map(a -> b, c -> d)

test2 = test2 + ("e"->"f" , "g"->"h")
test2: Map[String,String] = Map(a -> b, c -> d, e -> f, g -> h)
Run Code Online (Sandbox Code Playgroud)

等等.我想知道Map不应该保留插入顺序[为此目的我们有LinkedHashMap]那么为什么结果显示保存顺序?这仅仅是巧合还是不仅仅是满足于眼睛?

提前致谢!

om-*_*nom 6

这只是前4项的巧合.

val m = Map('a' -> 1, 'b' -> 2, 'c' -> 3, 'd' -> 4)
// m: immutable.Map[Char,Int] = Map(a -> 1, b -> 2, c -> 3, d -> 4)

m + ('e' -> 5)
// immutable.Map[Char,Int] = Map(e -> 5, a -> 1, b -> 2, c -> 3, d -> 4)
Run Code Online (Sandbox Code Playgroud)

原因是小地图有一个特殊的优化实现,它确实保留了插入顺序(例如附加到一对的Map),但是一旦你越过这个边界它就不再起作用了.