社区
非技术区
帖子详情
为什么equals方法需要重写才能进行比较使用?
zaixiankaifa
2011-04-12 02:45:49
在学习到equals的时候,发现这个方法很特别,需要重写,才能使用该方法,不明白为什么需要重写才能使用该方法,欢迎拍砖,本人刚入门。
...全文
65
1
打赏
收藏
为什么equals方法需要重写才能进行比较使用?
在学习到equals的时候,发现这个方法很特别,需要重写,才能使用该方法,不明白为什么需要重写才能使用该方法,欢迎拍砖,本人刚入门。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
剑神一笑
2011-04-12
打赏
举报
回复
http://topic.csdn.net/u/20080421/17/51b2a8e6-e057-4694-a6e3-880d6fe55367.html
为什么
重写
equals
方法
,还必须要
重写
hashcode
方法
原因: 1.为了提高效率 采取
重写
hashcode
方法
,先
进行
hashcode
比较
,如果不同,那么就没必要在
进行
equals
的
比较
了,这样就大大减少了
equals
比较
的次数,这对比
需要
比较
的数量很大的效率提高是很明显的,一个很好的例子就是在集合中的
使用
。 我们都知道java中的List集合是有序的,因此是可以重复的,而set集合是无序的,因此是不能重复的,那么怎么能保证不能被放入重复的元素呢,但靠
equals
方法
一样
比较
的话,如果原来集合中以后又10000个元素了,那么放入10001个元素,难道要将前面的所
为什么
重写
equals
方法
时必须
重写
hashCode
方法
所有对于
需要
大量并且快速的对比的话如果都用
equals
去做显然效率太低,解决方式是,每当
需要
对比的时候,hashCode去对比,这就用到了哈希表,能够快速的地位到对象的存储位置,如果hashCode不一样,则表示这两个对象肯定不相等(也就是不必再用
equals
去再对比了),如果hashCode相同,此时再对比它们的
equals
,如果
equals
也相同,则表示这两个对象是真的相同了。哈希表在一定程度上也可以起到判重的作用,但也可能存储哈希冲突,即使是两个不同的对象,它们的哈希值也可能是相同的。...
细说为什么
重写
equals
必须要
重写
hashCode
为什么
重写
equals
必须要
重写
hashCode 1.一些误区
重写
了
equals
不
重写
hashcode并不会报错,只是逻辑上会出错。 并不是每次
重写
equals
都
需要
重写
hashcode,但推荐都写上。 2.为什么要
重写
equals
要理解
重写
hashcode的必要性,我们先来讲讲为什么要
重写
equals
。原因也很简单,默认的
equals
方法
不够看了,
需要
给它升 级一下。 先看看所有类的祖宗Object类中
equals
方法
的代码,这可以让我们理解为什么要
重写
equals
。 public boolean
Java中为什么要
重写
hashCode
方法
和
equals
方法
?
重写
了
equals
方法
为什么还要
重写
hashCode
方法
? 啊~~终于明白了
在我们开发中,可能经常听到
重写
hashCode
方法
和
equals
方法
,这是为什么呢? 为了更容易通俗易懂,来个小故事缓解一下激动的心情~~ 打个比方,一个名叫张三的人去住酒店,在前台登记完名字就去了99层100号房间,此时警察来前台找叫张三的这个人住在哪间房,经过查询,该酒店住宿的有50个叫张三的,
需要
遍历查询,查询起来很不方便。 那么就换另外一种登记方式,前台登记时登记身份证号,警察来前台找身份证号时发现身份证号也存在重复,经过哈希算法
进行
计算后相同的hashcode值被分到了一个房间然后产生链表
重写
equals
方法
,为什么一定要
重写
hashCode
方法
一、为什么
重写
equals
方法
一定要
重写
hashCode
方法
? 1、在
使用
了散列表数据结构的集合中(HashMap, HashSet, HashTable) 在存取元素时先判断取到key对象的hashCode,然后跟集合容量取余后得到具体的位置,如果改位置上已经有值,再通过
equals
方法
判断是否相等,相等则为同一个元素,否则为不同元素。 2、第一点总结:为了能在散列表结构的集合中正常
使用
,那么判断两个对象是否相等,应该符合下面两个条件 1) hashCode相等,
equals
不一定相等。 ...
非技术区
23,407
社区成员
70,513
社区内容
发帖
与我相关
我的任务
非技术区
Java 非技术区
复制链接
扫一扫
分享
社区描述
Java 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章