【发布时间】:2011-08-15 15:50:46
【问题描述】:
为什么Java中Object的Hashcode会发生变化?它有变化吗? 它与 Hashtable 有什么关系? 每个对象都应该有它唯一的哈希码。那么,Rehashing 是一个原因吗?
提前致谢。
【问题讨论】:
-
你有它如何变化的例子吗?
为什么Java中Object的Hashcode会发生变化?它有变化吗? 它与 Hashtable 有什么关系? 每个对象都应该有它唯一的哈希码。那么,Rehashing 是一个原因吗?
提前致谢。
【问题讨论】:
哈希码的默认实现等价于对象标识。但是,某些对象会覆盖哈希码,这可能会为您提供根据对象状态更改的哈希码。
通常,如果您要覆盖 equals 的定义(事实上,如果您覆盖 equals,您应该覆盖 hashcode)。这是因为您希望根据您创建的任何定义都相等的对象返回相同的哈希码。否则,您可能会遇到地图包含多个“相等”对象的情况,因为它们返回不同的哈希码。
【讨论】: