为了账号安全,请及时绑定邮箱和手机立即绑定

为何要重写Course下的hashCode()和equals()方法,我这样理解对不对?

本来HashSet下的contains()方法是比较student.courses下的元素的哈希码与course2的哈希码是否一样,这当然是不一样的所以返回的是false。而重写之后,是比较student.courses下的元素的name属性的哈希码与course2.name的哈希码是否一样,它们是一样的,所以返回的是true。

这样理解对么?一直都一知半解的。。。

正在回答

3 回答

你理解了吗  可以给我说说吗   我不理解对于List与Set而言,都是遍历一边,分别与courses2.name进行equals   

List不需要重写  但是Set就需要重写?

这是我理解的hashcode与equals   (hash比较一个域,equals比较域中一个元素.equals为true,hash一定为true;

equals为false,hash不一定为false)  

在此 contains先比较hash,后比较equals( hash为true,equals不一定为true;hash为false,equals一定为false) 

这是我理解的不知道对不对      

0 回复 有任何疑惑可以回复我~

java自带的hashCode()和equals()方法定义比较简单,很多时候不适用我们使用的场合,这两个方法在哪里重写都一样,只要是在这个包下的。你使用contains()方法时候他需要调用者两个方法,他会优先使用重写的hashCode()和equals()方法

0 回复 有任何疑惑可以回复我~

这样理解对的呢   

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为何要重写Course下的hashCode()和equals()方法,我这样理解对不对?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信