7.equals方法实现

equals()方法需要根据业务而来,取对象属性中标识对象业务唯一标识来进行比较

实现了equals方法,同时需要实现hashcode方法,为了维护统一性

推荐http://blog.sina.com.cn/s/blog_700aa8830101jtlf.html

 

说到equals不得不提到一个问题,equals和hashcode方法,实现了equals方法为什么要实现hashcode方法

是为了保证统一性,重写了equals方法,同时也需要重写hashcode方法

在HashMap场景下,put的时候,是先根据key的hashcode来定位到是在哪个bucket(数组下标),然后再通过遍历单链来查找equals的对象

如果重写了equals没有重写hashcode,那么容易导致混乱

 

equals相同,hashcode相同么?

:equals相同,hashcode一定相同

hashcode相同,equals相同么?

:hashcode相同,equals不一定相同,比如HashMap的bucket的单链全是hashcode相同的

posted on 2017-12-03 18:31  Vindia  阅读(890)  评论(0)    收藏  举报

导航