关于hashCode方法的重写

关于hashCode方法的重写

hashCode不是必须重写的方法,但是我找不到Object类中hashCode方法的实现。

我查看了Object的hashCode,它是一个本地方法:

public native int hashCode();

我想知道,如果不重写这个方法,它还能默认给出一个比较理想的Hash值么。

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,hashCode()是根据对象地址生成的,每个new出来的对象的地址值是不同的,所以,如果不重写hashCode()方法,那默认每个对象的hashCode()值都不一样,所以每个对象都不会相等

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕阿园 2020-08-13 18:03:38

同学你好,如果不重写hashCode,返回的是根据该对象地址生成的哈希码值

如果对象没有重写hashcode()方法,任何对象的hashCode()方法都是不相等

祝学习愉快

  • 提问者 易萧 #1
    也就是说,如果没有重写hashCode方法,即便equals会判定相等,但由于散列集首先判断的是hashCode,所以也会不相等,除非是同一对象,对吗。
    2020-08-13 18:20:53
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师