【♨Java基础】说说hashCode() 和 equals() 之间的关系?
equals() 的作用是用来判断两个对象是否相等。
hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。
在HashSet, Hashtable, HashMap等等这些本质是散列表的数据结构中:
- 同一个对象(没有发生过修改)无论何时调用hashCode()得到的返回值必须一样。
- hashCode()的返回值相等的对象不一定相等,通过hashCode()和equals()必须能唯一确定一个对象。
- 一旦重写了equals()函数(重写equals的时候还要注意要满足自反性、对称性、传递性、一致性),就必须重写hashCode()函数。
参考: |