effective java关于hashcode问题

想请教下,为什么重写equals方法时需要重写hashcode方法,使用超类存在的hashcode方法会产生什么问题嘛?

1个回答

如果你不重写,每个新new的对象都会分级分配一个hashcode,即使类里的元素一样,equals相等,但是hashcode不相等。如果你把数据存入hashset中,即使equals相等,但是两个数据都可以插入hashset中,这是不合理的

VICTOR_fusheng
VICTOR_fusheng 回复CFDN_CN: object的hashcode每一个对象返回的都是不同的值,是随机的,实现不了这个作用。关于hashcode一个要求就是如果equals方法返回的结果相等,则必须返回相同的hashcode,你不重写hashcode,equals相同的对象的hashcode是不一样的,你自己试一下就清楚了
6 个月之前 回复
CFDN_CN
CFDN_CN 你说的这个其实在书里有,只是我搞不清楚父类的hashcode方法不能实现这个作用么?
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问