您好,登錄后才能下訂單哦!
java中的hashcode和equals有什么區別?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
hashcode:對象的初始地址的整數表示
3、Integer類,返回的哈希碼就是Integer對象里所包含的那個整數的數值,例如Integer i1=new Integer(100),i1.hashCode的值就是100 。由此可見,2個一樣大小的Integer對象,返回的哈希碼也一樣。
hashCode是為了提高在散列結構存儲中查找的效率,在線性表中沒有作用。
equals被用來檢測兩個對象是否相等,即兩個對象的內容是否相等。
區別:
一般一個類的對象如果會存儲在HashTable,HashSet,HashMap等散列存儲結構中,那么重寫equals后最好也重寫hashCode,否則會導致存儲數據的不唯一性(存儲了兩個equals相等的數據)。而如果確定不會存儲在這些散列結構中,則可以不重寫hashCode。
若兩個對象equals返回true,則hashCode有必要也返回相同的int數。
若兩個對象equals返回false,則hashCode不一定返回不同的int數,但為不相等的對象生成不同hashCode值可以提高哈希表的性能。
若兩個對象hashCode返回相同int數,則equals不一定返回true。
若兩個對象hashCode返回不同int數,則equals一定返回false。
同一對象在執行期間若已經存儲在集合中,則不能修改影響hashCode值的相關信息,否則會導致內存泄露問題。
一般來說涉及到對象之間的比較大小就需要重寫equals方法。
關于java中的hashcode和equals有什么區別問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。