Java覆写equals()和hashcode()

Object.equals()

obj1.equals(obj2) 为真时—两个对象指向同一个内存位置

Object.hashcode()

obj1.hashcode()== obj2.hashcode()–两个对象的哈希码相等

覆写equals()

覆写一个方法的前提是方法签名必须一致,而方法签名包括参数类型,equals方法接收的对象的类型是Object

重写equals–为了比较对象的value值
例A类有a1、a2、a3三个属性
重写A类的equals()

@Override public boolean equals(Object obj) {
 if(obj== null)
   return false;//不能是空对象
if(!(obj instanceof A))
 return false;//如果不是A类对象,肯定不相等
A a = (A)obj;//因为接收到的参数类型是Object不是A,所以需要 A a = (A)obj来进行转型,方可调用A类中定义的字段和方法来进行操作
if( a.a1 == this.a1 && a.a2== this.a2 && a.a3==this.a3 )
        return true;
 else
            return false;  
 }

覆写equals()

hashcode是用于散列数据的快速存取,如利用HashSet/HashMap/Hashtable类来存储数据时,都是根据存储对象的hashcode值来进行判断是否相同的。

覆写hashcode方法是为了将数据存入HashSet/HashMap/Hashtable类时进行比较

@Override public int hashCode()
 { 
 return this.a1.hashCode() + this.a2.hashCode() +this.a3.hashCode() 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值