0%

探索equals必须重写hashCode方法的原理

hashCode()的作用是获取哈希码,它实际上返回了一个int整数,这个哈希码的作用就是确定该对象在哈希表中的索引位置,并且hashCode()方法被定义在Object.java中,这就意味着java中任何类都包含了hashCode()函数;

为什么要有hashCode呢?

通过HashSet查重来理解:

​ 当把对象加入HashSet时,HashSet会先计算对象的hashCode值来判断对象加入的位置,同时也会与其他已经加入的对象的hashCode值作比较,如果没有相同的hashCode,但是如果发现有相同的hashCode值的对象,这时就会调用equals()方法来检查equals相等的对象是否真的相同,如果相同,则HashSet不会让其加入操作成功,如果不同,则重新散列到其他位置,这样大大减少了equals的次数,提高了执行效率,

由此得到hashCode和equals的规定:

​ 如果两个对象相等,则hashCode值一定相同;

​ 如果两个对象相等,则两个对象分别调用equals都返回true;

​ 如果两个对象的hashCode相等,则两个对象并不一定相等;

----------本文结束感谢您的阅读----------