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