面试准备3-hashcode和equals区别

equals默认比较的是对线的地址,当然可以重写,比如string类比较的是值
hashcode他获取的是哈希码,也称散列码,他实际返回的是一个int类型的整数,哈希码的作用就是确定该对象在哈希表中的位置,java任何对象都有hashcode函数,它是以key-value的方式存储在散列表中,特点就是能够快速查出索引对应的值

为什么要有hashcode?

就拿hashset如何检查是否为重复元素为例
对象加入hashset时会调用hashcode方法来检查这个位置是否有值,如果没有,那直接加入,如果有值的话,他就会调用equals方法,来比较其中的其中,如不不能的话让他进行操作,哈希冲突后就是掉用equals方法,为什么不直接用equals方法的原因equals要地址一个一个比较其中的地址,大大消耗了其中的性能

如果两个对象相等,那个hashcode也一定相等
如果两个对象相等,那么equals返回的一定是true
如果两个对象的哈希码相同,他们不一定是同一个对象
所以,equals覆盖过,hashcode也要覆盖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值