effective java学习之对于所有对象都通用的方法——关于equals()与hashCode()的总结
关于equals()与hashCode()的总结
一、equals()方法
实践表明,当equals()方法被override时,hashCode()也要被override。按照一般hashCode()方法的实现来说,相等的对象,它们的hash code一定相等。
二、hashcode()方法
实践表明,由Object类定义的hashCode()方法对于不同的对象返回不同的integer。
三、hashcode与Java集合
1、当集合要添加新的元素时,先调用这个元素的hashCode方法,就一下子能定位到它应该放置的物理位置上。
2、如果这个位置上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;
3、如果这个位置上已经有元素了(哈希冲突),就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址。
简单描述:
1、equals相同,则hashcode一定相同。
2、equals不同,hashcode可能相同。
3、hashCode相同,equals可能相同。
4、hashcode不同,equals一定不同。

浙公网安备 33010602011771号