equals與hashcode的關系是:
兩個對象在equals相等的情況下,hashcode有可能相等也有可能不相等,
而兩個對象在hashcode不相等的情況下,equals也必定不相等。
理解equals的應用:它是用於用戶在進行對比的時候,這個時候對比的是內容是否相等
理解hashcode的應用:例如set集合,它的不可重復,進行對比的便是hashcode是否相等,因此set集合實現了不可重復。
如果根據 equals(Object) 方法,兩個對象是相等的,那麽對這兩個對象中的每個對象調用 hashCode 方法都必須生成相同的整數結果。
即使兩個hashCode()返回的結果相等,兩個對象的equals方法也不壹定相等。
擴展資料:
equals:
電腦編程語言,被用來檢測兩個對象是否相等,即兩個對象的內容是否相等。
equals 方法(是String類從它的超類Object中繼承的)
==用於比較引用和比較基本數據類型時具有不同的功能:
比較基本數據類型,如果兩個值相同,則結果為true
而在比較引用時,如果引用指向內存中的同壹對象,結果為true
hashCode:
是jdk根據對象的地址或者字符串或者數字算出來的int類型的數值。
支持此方法是為了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。
HashMap對象是根據其Key的hashCode來獲取對應的Value。
在重寫父類的equals方法時,也重寫hashcode方法,使相等的兩個對象獲取的HashCode也相等。
這樣當此對象做Map類中的Key時,兩個equals為true的對象其獲取的value都是同壹個,比較符合實際。
參考資料:
百度百科 ------ hashcode
百度百科 ------ equals