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()方法來判斷是否是同一個對象,如果不是,就覆蓋。