爲什麼需要重寫equals方法?

因爲如果不重寫equals方法,當將自定義對象放到map或者set中時;如果這時兩個對象的hashCode相同,就會調用equals方法進行比較,這個時候會調用Object中默認的equals方法,而默認的equals方法只是比較了兩個對象的引用是否指向了同一個對象,顯然大多數時候都不會指向,這樣就會將重複對象存入map或者set中。這就 破壞了map與set不能存儲重複對象的特性,會造成內存溢出 。

hashCode()介紹
hashCode() 的作用是獲取哈希碼,也稱爲散列碼;它實際上是返回一個 int 整數。這個哈希碼的作用是確定該對象在哈希表中的索引位置。hashCode() 定義在 JDK 的 Object.java 中,這就意味着 Java 中的任何類都包含有 hashCode() 函數。

散列表存儲的是鍵值對(key-value),它的特點是:能根據“鍵”快速的檢索出對應的“值”。這其中就利用到了散列碼!(可以快速找到所需要的對象)
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章