3 Java Object中hashCode()方法和equals()方法重寫問題

hashCode()和equals()方法定義在Object類中,所以Java中所有對象都有這2個方法。

public native int hashCode();

public boolean equals(Object obj) {
    return (this == obj);
}

hashCode()方法返回的是一個對象的散列值,並不是唯一標識一個對象的ID,不同對象的hashcode是可以相同的。

hashCode()方法是專門來給具備hash特性的數據結構用的,在Java中就是各種hash特性的集合。

我們需要結合集合需要具備的能力來理解hashCode應該具備怎樣的功能,以HashMap爲例,它用來存儲鍵值對,對於重複的對象需要覆蓋掉,先使用hashCode()方法來確定槽的位置,如果沒有碰撞,就可以直接存儲進去,如果有碰撞,就需要用equals()方法來判斷是否是同一個對象,如果不是,就覆蓋。

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