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()方法来判断是否是同一个对象,如果不是,就覆盖。

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