Java 中 equals 和 HashCode 方法的分析

LarsCheng at 
Java中equals和HashCode方法的分析的配图

概括为以下几点:

  1. 该方法返回对象的哈希码,支持该方法是为哈希表提供一些优点,例如,HashMap 提供的哈希表。
  2. 同一个对象未发生改变时多次调用hashCode()返回值必须相同,
  3. 两个对象equals不相等,那么两对象的hashCode()返回必定不同(此处可用来提高哈希表性能)
  4. 两个对象的hashCode()返回值相同,两对象不一定相同,还需要通过equals()再次判断
  5. 当equals方法被重写时,通常有必要重写 hashCode 方法

通过第1点其实可以看出,hashCode() 在散列表中才有用,在其它情况下没用。在散列表中hashCode() 的作用是获取对象的散列码,进而确定该对象在散列表中的位置,当对象不会用来创建像hashMap、hashSet等散列表时,hashCode()实际上用不上。