[英]Difference between hashmap 1.4 and 1.6
我的应用程序运行在1.4
和1.6
。 元素的顺序是打印在1.6
版本不同于1.4
。 我使用了LinkedHashMap
修复了这个问题。 现在这个订单与1.4
完全相同。 除了下载整个jdk之外,我没有找到HashMap
1.4
源代码。 除了通用版本在新版本中有什么变化?
HashMap
中元素的迭代顺序从未得到保证,因此实现可以自由地更改它。 LinkedHashMap
已经解决了这个缺点。
这样的改变可能是由于例如Java 1.4.1中的哈希算法的完全改进 ......但是,我们还注意到在将项目迁移到Java6时发生了这样的改变,因此该版本也发生了变化。
HashMap
的迭代顺序是未定义的 。 这意味着它可以(并且确实)一直在变化。 它不仅取决于代码,还取决于对象的哈希码的值,它们本身不仅可以从版本到版本不同,甚至可以从运行到运行。
LinkedHashMap
特别作为具有可预测迭代顺序的HashMap
替代方案存在。
我想HashMap的实现已经改变了。 HashMap不保证任何订单,因此您不应该依赖它,因为可以在没有任何通知的情况下使用新版本更改它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.