重写equals()

本文探讨了在JAVA中为何需要重写equals方法,详细解释了重写的原则和要求,如自反性、对称性、传递性、一致性和非空性。同时强调了在重写equals时必须一同重写hashCode方法,以确保在哈希集合中正确处理键值。通过实例展示了不恰当重写可能导致的问题,并提供了解决方案。
摘要由CSDN通过智能技术生成

JAVA重写equals方法

为什么需要重写equals方法

equals方法本是判断两个对象的内容是否相等,判断的依据则是对象中的所有成员变量是否相等,而未重写的equals方法是继承自Object类中的,它的判断逻辑是对象引用所指向的是否为同一对象,而在集合中很多时候需要判断,集合中是否存在相同对象时,就需要重写equals方法了。

如何重写equals方法

一个好的equals()应该满足以下的要求:

  1. 自反性:对任何的非空引用x,满足x.equals(x)返回true。

  2. 对称性:对任意的x和y,x.equals(y)返回的结果与y.equals()的结果相同。

  3. 传递性:对于任意的x,y,z,如果x.equals(y) x.equals(z)返回都为true,那么y.equals(z)的返回值也为true。

  4. 一致性:在对象没有被改变的时候,多次调用equals方法的结果不会改变。

  5. 非空性:对于任何非空的对象引用x,x.equals(null)返回的结果为false。

重写equals方法时必须重写hashCode方法

public class Animal {
    private String name;
    private int id;
    public Animal(String name,int id){
        this.name=name;
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值