对象比较时候重写qual和hashcode

对象比较时候重写qual和hashcode

我们在java和python的比较对象的时候,都会要求重写equal和hashcode的方法,之前学习过,后面忘记了。所以写一个博客用来记录一下的。

equal()的所属以及内部原理

说起equals方法,我们都知道是超类Object中的一个基本方法,用于检查一个对象是否与另外一个对象相等。而在Object类中这个方法实际上是判断两个对象是否具有相同的引用,如果有,它们就一定相等。

实际上我们知道所有的对象都拥有标识(内存地址)和状态(数据),同时“==”比较两个对象的内存地址,所以说Object的equals()方法是比较两个对象是否相等,若object1.equals(object2)为true,则表示quals1和equals实际上是引用同一个对象

equals()与‘==’的区别

常常我们都会说equals比较的是对象的内容,而==比较的是对象的地址。

总结

默认情况下也就是从超类Object继承而来的equals方法与“==”是完全等价的,比较的都是对象的内存地址,但我们可以重写equals方法,使其按照我们需求的方式进行比较。

为什么重写equals()的同时还得重写hashCode()

Map接口的类会使用到键对象的哈希码,当我们调用put方法或者get方法对Map容器进行操作时,都是根据键对象的哈希码来计算存储位置的,因此如果我们队哈希码的获取没有相关保证,就可能会得不到预期的结果。在java中,我们可以使用hashCode()来获取对象的哈希码,其值就是对象的存储地址。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值