当你在Java中重写了equals()
方法后,通常建议你也应该重写hashCode()
方法。这是基于Java集合框架的设计原则,具体来说是基于Object
类中的equals()
和hashCode()
方法之间的约定。以下是为什么需要这样做的一些关键原因:
一致性原则:例如就hashMap来说如果两个对象根据equals(Object obj)
方法是相等的,那么它们的hashCode()
值必须相同,如果hashCode不一致,可能会被不会被放入哈希表的同一个桶中,导致查找失败。