为什么Java中的对象Hashcode会改变?它真的会改变吗?它与Hashtable有什么关系?每个对象都应该有它自己独特的hashcode,所以rehashing是造成它改变的原因之一吗?
提前感谢您。
hashcode的默认实现等同于对象身份。然而,一些对象会重写hashcode,这可能根据对象状态给你不同的hashcode。
通常情况下,你只有在重写equals定义时才会这样做(实际上,如果你重写了equals你应该也要重写hashcode)。这是因为你希望所有按照你定义相等的对象返回相同的hashcode。否则,你可能会遇到这样的情况:一个map包含多个“相等”的对象,因为它们返回不同的hashcode。