1.使用hashcode方法提前校驗,可以避免每一次比對都調用equals方法,提高效率
2.保證是同一個對象,如果重寫了equals方法,而沒有重寫hashcode方法,會出現equals相等的對象,hashcode不相等的情況,重寫hashcode方法就是為了避免這種情況的出現。
hashCode()與 equals()的相關規定
如果兩個對象相等,則 hashcode 一定也是相同的
兩個對象相等,對兩個對象分别調用 equals 方法都傳回 true
兩個對象有相同的 hashcode 值,它們也不一定是相等的
是以,equals 方法被覆寫過,則 hashCode 方法也必須被覆寫
hashCode() 的預設行為是對堆上的對象産生獨特值。如果沒有重寫 hashCode(),則該 class 的兩個對象無論如何都不會相等(即使這兩個對象指向相同的資料)
總結:
就一句,規定,因為為了提高效率,hash類型的存儲結構,添加元素重複性校驗的标準就是先取hashCode值,後判斷equals(),不重寫達不到判等效果。