hashcode和equals的关系

 我来答
司泽南聿
2022-11-06 · TA获得超过1536个赞
知道大有可为答主
回答量:6342
采纳率:100%
帮助的人:385万
展开全部

hashcode和equals的关系如下:

  • hashCode()方法是获取一串整数,我们称之为哈希码。默认情况下,是Object类里面的一个native方法,由jvm实现,其作用是标识一个唯一的对象(注意:这个hash码在无锁状态下存储于对象头中)

  • equals()方法是比较两个对象是否相等。默认情况下比较两个对象的在内存的地址值,和==等价。不过,我们一般都会重写这个方法来达到我们想要的对象相等的效果。

  • 这两个方法一个标识唯一对象,一个标识对象内存地址,描述两个不同维度信息好像没有什么关系?

  • 目前为止确实是这样,但是在Map实现类中,计算hash值的扰动函数是依赖hashcode,如果只重写equals的话,那么会导致相同对象的生成的key值不一样

  • 所以,需要重写一般重写equals的时候,都会要求重写hashCode方法,避免出现这样的bug。

总结:hashCode和equals没有什么关系,不过一般重写equals的时候会强制要求重写hashCode避免出bug。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式