1. hashCode()和equals()的关系:
a. hashCode()的作用是计算出哈希值。
在哈希表中,存储的是key-value对象,通过对key-value对象进行哈希运算得到哈希值,找到其在哈希表中对应的索引位置。如果对应的索引位置上已经有存储对象时,再判断两个对象是否相等,如果相等则不插入对象,不相等则产生哈希冲突。
b. 在java中,hashCode()只在创建HashMap、HashSet、HashTable等哈希表数据结构时,才有作用,才会跟equals()扯上关系。
c. 对于两个相等的对象(equals()返回true),其hashCode()得到的结果一定相等。但反过来则不一定相等。
d. hashCode()和equals()是Object中的方法,hashCode()默认的实现是计算对象堆上数据的哈希值,当override equals()时,也应该override hashCode()。