3

我有在两者上运行的应用1.4程序1.6。在版本中打印的元素顺序1.6不同于1.4. 我用LinkedHashMap了它解决了这个问题。现在这个顺序与 of 完全相同1.4。除了下载整个 jdk 之外,我没有找到1.4源代码。HashMap除了在新版本中更改的通用内容?

4

3 回答 3

4

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

这样的变化可能是由于Java 1.4.1 中散列算法的彻底修改造成的……但话又说回来,我们在将项目迁移到 Java6 时也注意到了这样的变化,因此该版本也发生了变化。

于 2012-04-25T15:57:00.157 回答
2

HashMap中的迭代顺序未定义。这意味着它可以(并且确实)一直在变化。它不仅取决于代码,还取决于对象的哈希码值,这些值本身不仅因版本而异,甚至因运行而异。

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

于 2012-04-25T15:57:12.130 回答
0

我想 HashMap 的实现已经改变了。HashMap 不保证任何顺序,所以你不应该依赖它,因为它可能会在没有任何通知的情况下随着新版本的变化而改变。

于 2012-04-25T15:58:14.787 回答