我遇到将对添加到现有地图的问题。一旦我到达第五对地图,地图重新排序。订单是正确的4对,但一旦添加第5,它就会自行转移。请参阅下面的示例(假设我一次构建了一对4对Map。):
<a>
添加的第五个元素跳到了Map的前面,并将其他元素移动到周围。有没有办法保持元素的顺序(1,2,3,4,5)?
由于
答案 0 :(得分:3)
默认情况下,Scala的HashMap
使用"a1" -> 1
。
来自http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html:
此课程不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变
因此,地图实际上不是包含hash("a1") -> 1
的表格,而是包含LinkedHashMap
的表格。地图根据键的哈希值而非您放入键中的键重新排列键。
根据评论中的建议,使用ListMap
或{{1}}:
Scala Map implementation keeping entries in insertion order?
PS:您可能有兴趣阅读本文:http://howtodoinjava.com/2012/10/09/how-hashmap-works-in-java/