effective java学习之对于所有对象都通用的方法——关于equals()与hashCode()的总结

关于equals()hashCode()的总结

一、equals()方法

  实践表明,当equals()方法被override时,hashCode()也要被override。按照一般hashCode()方法的实现来说,相等的对象,它们的hash code一定相等。

二、hashcode()方法

   实践表明,由Object类定义的hashCode()方法对于不同的对象返回不同的integer

三、hashcodeJava集合

  1当集合要添加新的元素时,先调用这个元素的hashCode方法,就一下子能定位到它应该放置的物理位置上。

  2如果这个位置上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;

  3如果这个位置上已经有元素了(哈希冲突),就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址。

简单描述:

  1equals相同,则hashcode一定相同。

  2equals不同,hashcode可能相同。

  3hashCode相同,equals可能相同。

  4hashcode不同,equals一定不同。

posted @ 2018-04-22 21:32  小码农成长记  阅读(97)  评论(0)    收藏  举报