java中hashset重写equals方法中只比较属性值的问题

本文详细解析了equals方法的实现原理,特别是针对Course类的重写过程。通过三个关键判定条件,探讨了对象身份与类型检查的重要性,以及如何通过属性比较实现对象相等性的判断。

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

在老师重写的equals代码中开始有三个判定条件

  1. if (this == obj)        //如果直接可以用==判定会直接返回true

  2. if(obj==null)           //如果obj为null会直接返回false

  3. if(!(obj instanceof Course))    //注意这一条已经在判定obj和Course是否是同一类型了,只有在判定是同类型的情况下才会进行后续的(Course)obj强制类型转换,否则返回false。

综上两个对象完全是同一类型的,那么他们可以调用的方法一定也相同。

回到具体的例子中,我们程序的目的是判定List coursesToSelect中是否包含课程,我们的目的是通过Course.name属性判定是否存在包含关系。从实际角度出发,如果待选课程中包含

    1.高数    2.语文    3.毛概

我们判定某个Course对象是否包含于其中的时候也只需要比较"高数",是不是和待选课程中的某一项名称一样,也就是只需要判定name属性就足够了。

转载于:https://www.cnblogs.com/stitchZsx/p/9558606.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值