不知道我的想法对不对
还有0人有此问题
发表在Java视频课程答疑 2017-07-04
是否精华
版块置顶:

在视频java第二季的9.8中,老师的说道把p2的id改动了后,然后删除p2,结果p2没有删掉,原因是改动后的p2哈希值变成id=5的哈希值,所以没删掉。依据视频来看,hash码与id有关,但id不是哈希码。

我在想,是不是p2的哈希码一开始实例化(假设为2,这个2不是它的id)就已经不能修改了,所以即使后面将p2的id改为5,去删除它,但是因为p2的哈希码(为2)没变,而要删除的这个p2相当于一个实例化时哈希码(为5,并不是id),所以删除不了。同样,视频后面有两个一样的person,也是因为前一个哈希码为2,后一个哈希码不为2,所以才能添加进来。因为hashset必须要hashcode返回值类型相同与equals方法返回为true。

分享到:
精彩评论 2
David
学分:914 LV7
TA的每日心情
最后的冲刺
2017-07-15 10:46:08
2017-07-06
沙发

简单地说,HashSet集合判断两个元素相等的标准是两个对象通过equals()方法比较返回true,并且这两个对象的hashCode()方法的返回值也相等。

如果需要重写当前对象对应类的equals()方法,那么也应该重写其hashCode()方法。

lkhight
学分:665 LV6
2020-03-04
板凳

想法很底层 棒

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照