永发信息网

java中重写equals方法为什么要重写hashcode方法说明

答案:2  悬赏:0  手机版
解决时间 2021-03-03 05:00
java中重写equals方法为什么要重写hashcode方法说明
最佳答案
1、重写equals方法时需要重写hashCode方法,主要是针对Map、Set等集合类型的使用;
a: Map、Set等集合类型存放的对象必须是唯一的;
b: 集合类判断两个对象是否相等,是先判断equals是否相等,如果equals返回TRUE,还要再判断HashCode返回值是否ture,只有两者都返回ture,才认为该两个对象是相等的。
2、由于Object的hashCode返回的是对象的hash值,所以即使equals返回TRUE,集合也可能判定两个对象不等,所以必须重写hashCode方法,以保证当equals返回TRUE时,hashCode也返回Ture,这样才能使得集合中存放的对象唯一。
全部回答
equals 方法和 hashcode 方法没有必然关系,并不是说重写 equals 方法就一定要重写 hashcode 方法。 用途不同, equals 用来比较两个对象是否相等,在大多数 jdk 的集合类中判断唯一性的时候使用的都是 equals 方法。而 hashcode 方法用来计算对象的 hash 值,基于 hash 算法存放数据的集合会用到,比如 hashmap、hashset。 equals 方法很好理解,区别于直接比较对象内存地址的 == ,它被设计为用来比较对象内容语义上的相等。 而要理解 hashcode 方法,首先你要知道什么是散列算法,了解一下 hashmap 底下的存储结构和存放读取数据的过程(对 key 调用 hashcode 得散列值,找到该散列值对应的桶,往桶里放 value)。你可以认为 hashcode 是为了给对象分类用的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
校园网锐捷认证客户端怎么连接路由器?
网络机顶盒4G或16G是什么意思
kanon怎么读
金杰物流配货怎么去啊,有知道地址的么
患者,女,26岁,已婚。胃腚痞满,不思饮食,
无水乙醇是什么东西
【映照的近义词】映照近义词
我小白一个,好不容易在windows下进入了ubant
翻译:修建长城的最初目的是抵御外来敌人进攻
辨析…质和事物的存在是直接统一的”
云南本是个诗歌的家乡,路南和达西歌舞早著名
用电钻往墙上打孔打不进去该怎么办?
关于318惨案世人对刘和珍的评价
老杜罗底店这个地址在什么地方,我要处理点事
BIM软件哪个好用,类似BIM 360 Field,能够查
推荐资讯
前女朋友欠我的钱,我能要回来吗
闽清到福州多少公里
洁兰平价副食店地址在什么地方,想过去办事
灯能组什么词语有哪些
图美寝饰专卖店这个地址在什么地方,我要处理
新买的魅蓝E3,为什么没有flyme7
认识才两个月,现在也确定男女关系了,是异地
will be 后为什么接比较级?
光纤入户你预埋线能用吗,原来是用网线预埋装
2014年全国两会召开前夕,人民网就公众关注的
100%绵质床单摸起来粗燥
香港味道—蛋仔小茶(数码街店)在哪里啊,我有
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?