hashmap 1.4和1.6之间的区别

时间:2012-04-25 15:54:07

标签: java hashmap

我的应用程序在1.41.6上运行。在1.6版本中打印的元素顺序与1.4不同。我用LinkedHashMap修复了问题。现在这个顺序与1.4完全相同。除了下载整个jdk之外,我没有找到1.4 HashMap的源代码。除了通用版本在新版本中有什么变化吗?

3 个答案:

答案 0 :(得分:4)

HashMap中元素的迭代顺序从未得到保证,因此实现可以自由更改它。这个缺点已由LinkedHashMap补救。

这种改变可能是由例如complete revamping of the hashing algorithm in Java 1.4.1 ...但是,我们还注意到在将项目迁移到Java6时发生了这样的变化,因此该版本也发生了变化。

答案 1 :(得分:2)

HashMap中的迭代顺序是 undefined 。这意味着它可以(并且确实)一直在变化。它不仅取决于代码,还取决于对象的哈希码的值,它们本身不仅可以从版本到版本不同,甚至可以从运行到运行。

LinkedHashMap专门作为具有可预测迭代顺序的HashMap替代方案而存在。

答案 2 :(得分:0)

我想HashMap的实现已经改变了。 HashMap不保证任何订单,因此您不应该依赖它,因为它可能会在没有任何通知的情况下使用新版本进行更改。