概括为以下几点:
- 该方法返回对象的哈希码,支持该方法是为哈希表提供一些优点,例如,HashMap 提供的哈希表。
- 同一个对象未发生改变时多次调用hashCode()返回值必须相同,
- 两个对象equals不相等,那么两对象的hashCode()返回必定不同(此处可用来提高哈希表性能)
- 两个对象的hashCode()返回值相同,两对象不一定相同,还需要通过equals()再次判断
- 当equals方法被重写时,通常有必要重写 hashCode 方法
通过第1点其实可以看出,hashCode() 在散列表中才有用,在其它情况下没用。在散列表中hashCode() 的作用是获取对象的散列码,进而确定该对象在散列表中的位置,当对象不会用来创建像hashMap、hashSet等散列表时,hashCode()实际上用不上。
前言上一篇文章简单分析了 equals()与==的关系,本文我们再来看看 equals()与 hashcode()的关系。hashcode 的使用还是有很多坑的,一起看看吧~本文主要有以下几点来分析:hashCode 使用中产生的问题 equals/hashcode 的渊源产生问题的原因正确的使用姿势 hashCode 使用中产生的问题注:HashSet 是一个无序、不可重复的集合,我们做一个小测试运行如下代码:123456789101112131415161718192021222324252627282930313233343536public class HashEqualsDemo ……