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 等存储数据的依据。

猜你喜欢

转载自www.cnblogs.com/pfzhu/p/10269551.html