java-.equals()方法和hashcode()方法(重写)

本文详细解释了equals方法和hashcode方法的作用与联系,并探讨了为何需要重写这两个方法及其重要性。通过实例说明了equals方法如何判断对象是否相等,而hashcode方法则提高了查找效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. .equals()方法和hashcode()方法的作用
    .equals()方法用于判断该对象是否为同一对象,而默认的判断依据为“在内存中是否为同一位置
    hashcode的存在主要是用于查找的便携性,为不同的对象返回不同的整数。例如有0,1,2,3这四个块,有了hashcode就不用一个个按顺序找过去或是二分查找了,可以方便地标记一个对象的存储区块
  2. .equals()方法和hashcode()方法的联系
    同一个存储区块中可能有多个对象,而equals()方法就是用来区别其中的不同对象的。
    也就是说,被判定为equals的两个对象的hashcode必须相同,但是hashcode相同的对象可以不满足equals的条件
  3. 为什么要重写 .equals()方法
    有些时候需要判断是否为同一对象时,判断依据并不应该是”在内存中是否为同一位置”,比如说加入购物车时,同一个商品应该被合并,数量增加,而不是出现两次该商品,但只要是分别new出来的,它们所在的位置就不可能相同,自然也不满足equals的条件。要使它们被判定为同一商品(比如说利用独一无二的id)则需要重写。
  4. 为什么重写.equals()方法也要重写hashcode()方法
    参考第二点,被判定为equals的两个对象的hashcode必须相同,不同的话非常降低查找效率。
  5. .equals()方法和hashcode()方法的重写
    source - generate hashCode and equals()… - 选择属性
    选择的属性即为用于判定是否为同一对象的依据,类似于数据库中的主键(可有多列)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值