我们如何通过Java中的哈希码获取对象?有没有现有的方法?

时间:2014-10-05 09:19:35

标签: java object hashcode

在java中,我们可以使用Object.hashCode()来获取对象的哈希码,反过来,我们可以使用哈希码来获取对象吗?但是怎么样?有没有现成的方法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

Hashcode不能那样工作。它们意味着暗示两个物体是否相等。来自Object javadoc:

hashCode的一般合约是:

  • 每当在执行Java应用程序期间多次在同一对象上调用它时,hashCode方法必须始终返回相同的整数,前提是不修改对象上的equals比较中使用的信息。从应用程序的一次执行到同一应用程序的另一次执行,此整数不需要保持一致。
  • 如果两个对象根据equals(Object)方法相等,则对两个对象中的每一个调用hashCode方法必须产生相同的整数结果。
  • 如果两个对象根据equals(java.lang.Object)方法不相等,则不需要在两个对象中的每一个上调用hashCode方法必须生成不同的整数结果。但是,程序员应该知道为不等对象生成不同的整数结果可能会提高哈希表的性能。

由于不同的对象可能具有相同的哈希码,因此不存在从其哈希码中获取对象的方法。如果您有这种需要,请使用Map并使用密钥存储对象。但即使有Map每个键只有一个值(仍然来自javadoc:地图不能包含重复的键;每个键最多可以映射一个值