【发布时间】:2013-02-04 13:05:53
【问题描述】:
我在这里阅读了 Hashmap 和 Hashtable 之间的区别: http://javarevisited.blogspot.sg/2010/10/difference-between-hashmap-and.html
谁能解释一下为什么它说跟随?
“5. HashMap 不保证地图的顺序会随着时间的推移保持不变。”
在重新散列过程中顺序是否会改变,这是为什么?
如果您能指出资源或集合列表,这些资源或集合列表表现出不保证订单保持不变的行为,那也很好。
AFIK,ArrayList 提供这样的保证(如果我错了,请告诉我)
编辑:“地图顺序”= 可能是输入键或值的顺序。
【问题讨论】:
-
如果您想保留键的插入顺序,请使用 LinkedHashMap
-
我不确定这篇文章是否正确。我在 javadoc 中看不到任何保证
Hashtable将保留顺序,只是没有明确提到它不会(而HashMap的 javadoc 是明确的)。 -
你能定义“地图的顺序”吗?恕我直言,当这样的东西根本不存在时说它不被保存有点错误。
-
@Ingo:所有映射(和集合)都具有由其迭代器定义的隐式顺序。对于
Map,它是entrySet().iterator(),定义了它的顺序 -
@LukasEder 迭代器确实会以某种顺序返回元素 - 但这并不意味着它从中获取元素的东西定义(或具有)任何顺序。考虑一个 Iterator
,其中 next() 是 Random.nextDouble()。