3.Java hashCode() equals总结

Posted pfzhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.Java hashCode() equals总结相关的知识,希望对你有一定的参考价值。

1.hashCode存在的意义在于查找的快捷性,如Hashtable,HashMap等。hashCode是用来在散列存储结构中确定对象的存储地址的。

2.两个对象如果相同,那么两个对象的hash‘Code一定要相同。

3.如果对象的equals方法被重写,那么对象的hashCode也重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致。

4.两个对象的hashCode相同,并不一定表示两个对象就相同,只能够说明这两个对象在散列存储结构中,如Hashtable,他们存放在一起。

总结:hashCode是用来查找使用的,而equals是用来比较两个对象是否相等。

关系:

   1.equals()相等的两个对象,hashCode()一定相等;

   2.equals()不相等的两个对象,却并不能证明它们的hashCode()不相等

   3.hashCode()不等,一定能推出equals()也不等;hashCode()相等,equals()可能相            等,也可能不等。

判断两个类是否相等,用equals。那么先用hashCode方法,来判断其hashCode是否相等,如果不等,那么两个类一定不等,如果相等,则两个类可能相等,也可能不等,这个时候就需要调用equals再去进行判断。这样做的好处就是提高了效率。因此在hashCode和equals方法中,做判断的内容不能相同,否则就失去了该项意义。

hashCode是一个标识,到散列表中去找该对象的一个标识,如果相同的hashCode的类放于相同的散列表中,然后在通过equals进一步选出散列表中对应的对象。因此相同标识下的类不能重复,这也是hashMap,hashSet 等存储数据的依据。

 

以上是关于3.Java hashCode() equals总结的主要内容,如果未能解决你的问题,请参考以下文章

java里equals和hashCode之间啥关系

重写hashcode和equals怎么重写

重写了equals方法为何需要重写 hashCode

Java中关于equals()和hashCode()的问题

一文带你秒懂java中的hashcode

java hashCode, 引用以及equals().