什么时候重写hashcode与equals

注:本文的所有验证在文章最后

如果您愿意相信我的话,请静下心来,慢慢阅读,一定会解除您心中的些许疑惑

 

一、原生的hashCode与equals是什么样的

原生hashCode值为内存地址(未考正)

原生equals比较的是内存地址

二、什么时候重写equals?

答:比较两个实例是否相等时重写equals()。

equals()用于比较两个实例是否相等,两实例属性对应相等    =>    两实例相等

只单纯比较两个同类型实例是否相等时只重写equals()就可以。作者觉得  "为什么重写equals()一定要重写hashCode”这种标题并不合理。

三、什么时候重写hashCode?

答:自定义类型作为HashMap的key

我相信还有其他情况需要重写hashCode,作者愚笨,暂时还不了解其他的情况,请谅解。

四、重写hashCode与equals的例子

自定义类型作为HashMap的key,没错,这也是重写hashCode的原因。

讲解如下:

1.HashMap不允许key重复的含义:

请先明确:即使您未重写hashCode与equals,自定义类型作为HashMap的key,从代码上是完全被允许的。

HashMap中不允许key重复指的是逻辑重复,下图中的这种逻辑是不被允许的,但这种逻辑是存在的(不重写hashCode和equ

  • 11
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值