对象的hashCode

Java中的hashCode方法就是根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值
所以有:
如果两个对象的equals()是true, 那么这两个对象的hashCode就一定相等。
列如:a.equals(b)==true 就一定会有 a.hashCode()==b.hashCode();
反之,两个对象的hashCode相同,他们不一定会equals()==true

注意:
有些设计需要重写equals(),重写equals()时,最好同时重写hashCode()
因为在HashSet、HashMap以及HashTable这些中,一般是先判断列表中是否有hashCode,如果有才会用equals()判断是否相等的。
hashCode没有重写,如果在第一步判断就失败了,equals()就不会判断了。
所以:
equals方法和hashCode方法始终在逻辑上保持一致性

结论:
如果两个对象相等,那么他们的hashCode一定相同
如果两个对象的hashCode不相同,那么两个对象就一定不相等
如果两个对象的hashCode相同,两个对象也不一定相等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值