Java hashmap 1.4和1.6之间的差异

Java hashmap 1.4和1.6之间的差异,java,hashmap,Java,Hashmap,我有一个在1.4和1.6上运行的应用程序。元素的顺序打印在1.6版本中,与1.4版本不同。我使用了LinkedHashMap,解决了这个问题。现在,此顺序与1.4的顺序完全相同。除了下载整个jdk,我没有找到HashMap的1.4源代码。除了更新版本中的一般性更改之外?HashMap中元素的迭代顺序从未得到保证,因此实现可以自由更改。LinkedHashMap弥补了这个缺点 这种变化可能是由以下因素引起的:。。。但是,在将项目迁移到Java6时,我们也注意到了这样的变化,因此该版本也发生了变化。

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

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


这种变化可能是由以下因素引起的:。。。但是,在将项目迁移到Java6时,我们也注意到了这样的变化,因此该版本也发生了变化。

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


LinkedHashMap
作为一种可预测的迭代顺序的
HashMap
替代方案而存在。

我想HashMap的实现已经改变了。HashMap不保证任何顺序,因此您不应该依赖于它,因为它可以在没有任何通知的情况下随新版本进行更改。

我同意顺序取决于对象的hashcode,这就是为什么每次运行时,在旧版本和新版本中,顺序总是相同的原因。我不明白的是,在任何版本中,每次运行的顺序都会改变?我以前每次运行都会获得相同的顺序。或者这种行为是因为键的hashcode是由object的字符串字段之一计算的?我的意思是,如果键使用默认的
object.hashcode()
,则顺序在不同的运行中可能会有所不同;这些值最终基于内存地址,因此在运行之间会发生变化。