【发布时间】:2014-09-17 19:46:48
【问题描述】:
我有一个应用程序,它按行显示一组对象,一个对象 = 一行。对象存储在 HashMap 中。行的顺序不会影响应用程序的功能(这就是使用 HashMap 而不是可排序集合的原因)。
但是我注意到,当使用两个不同版本的 Java 虚拟机运行同一个应用程序时,运行方式会有所不同。该应用程序使用 JDK 5 编译,可以使用 Java 5 或 Java 6 运行时运行,没有任何功能差异。
有问题的对象覆盖了java.lang.Object#hashCode(),显然已经注意遵守Java API 中指定的约定。事实证明,它们在应用程序的每次运行中总是以相同的顺序出现(在同一个 Java 运行时中)。
出于好奇,为什么 Java 运行时的选择会影响顺序?
【问题讨论】:
-
(
LinkedHashMap可以给你一致的顺序。)