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()。