为什么对象的Hashcode会在Java中发生变化?它有变化吗? 它与Hashtable有什么关系? 每个对象都应该有它唯一的哈希码。那么,重新说明它的原因吗?
提前致谢。
答案 0 :(得分:2)
哈希码的默认实现等同于对象标识。但是,某些对象会覆盖哈希码,这可能会为您提供基于对象状态更改的哈希码。
如果你要覆盖equals的定义,通常你会这样做(事实上,如果你覆盖equals,你应该覆盖hashcode)。这是因为您希望通过您创建的任何定义相等的对象返回相同的哈希码。否则,您可能会遇到地图包含多个“相等”对象的情况,因为它们返回不同的哈希码。