2014-09-02 12 views
1
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) 

依此类推。我想知道Map不应该保持插入顺序[为此我们有LinkedHashMap],那么为什么结果显示保存顺序?这仅仅是一个巧合,还是比满足眼睛还要多?将使用“+”在地图中保存我的订单吗?无权利?

在此先感谢!

回答

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) 

的原因是,有针对小型地图这的确保持插入顺序(例如append to Map of one pair),但一旦你越过这个边界就不再工作了特别的优化实现。

2

巧合。订购可能被保留,但保留订购不是保证并且不应该被依赖。事实上,人们不应该考虑地图的有序性。

相关问题