全部评论
可以从这个角度理解:在无重合集合中插入一条数据的时候,会先判断hashCode是否相等,如果hashCode不相等,那么可以直接认为该集合中没有出现过这个数据;如果hashCode相等,会接着判断equals是否相等,因为会有哈希冲突,所以不能直接根据hashCode相等判断两个对象相等,如果equals也相等,才会认为集合中已经出现过该数据,。使用hashCode的原因是可以快速过滤掉不相等的,因为如果hashCode不相等那么equals也必然不相等。这也是为什么重写了equals就一定也要重写hashCode的原因,因为如果不重写的话,会出现equals相同但是hashCode不想等的情况,这就乱套了。从底层来说的话,hashCode是把对象的地址转换成数字,equals不重写的话比较的其实就是地址,结合哈希冲突就好理解了。
我这么和你说吧,y=x*x,你把x当做equal,x相等y(equals)一定相等,你说y相等x一定相等吗
这,很基础,可以结合hashmap 理解
结论:equals 相等的 hashcode一定相等,反之不一定。 原因:在java中,equals和hashcode是有设计要求的,equals相等,则hashcode一定相等,反之则不然。 @河老师
equals相同代表对象值是相同的(地址可能不同),hashcode是对对象值进行hash运算,所以equals相等,hashcode必然相等
我觉得要看重写这两个方法的逻辑是怎么实现的
重写equals必须重写hashcode,所以重不重写,equals都是hashcode的充分不必要条件
顶
相关推荐
02-11 13:25
燕京理工学院 数据分析师
在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。
建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分 点赞 评论 收藏
分享
02-24 19:45
西南大学 后端工程师
程序员小白条:简历写的有点太多了,一般两页是实习经历比较多的情况下,要么自己有一些有影响力的开源项目,如果你走软件,硬件没必要实习,学校安排总是没区分度的,央国企最好有中大厂实习,另外学历比较重要,不是都要求硕士的,技术会比互联网要求低一些 点赞 评论 收藏
分享
查看13道真题和解析