关于重复数据的判断问题

关于重复数据的判断问题

请问老师:

1、在HashSet中,是不是在添加数据的时候---set.add();的时候,就已经进行数据是否重复的判断了?

2、HashSet判断数据是否重复的方法是不是主要由HashCode()和equals()这两个方法来实现?

3、如果是由HashCode()和equals()这两个方法来实现,我知道Java的hashcode算法是固定的,那么为什么在Cat类中重写equals()就可以判断数据是否重复了呢?HashSet判断数据是否重复不是应该由HashSet自己的equals来实现的吗?

请老师解答一下,谢谢老师!!!

正在回答

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

1回答

关于你问题的回复:

前两个问题的回复是:是这样的

第三个问题:hashcode算法我们是用eclipse自动生成的,说固定的不准确。

HashSet判断数据是否重复,不是由它的equals()方法确定的。而是有添加到HashSet中的数据的hashCode()和equals()方法确定的。比如你向HashSet中添加Cat的4个对象,那么是要重写Cat类的hashCode()和equals()方法。在进行判断时,首先会判断hashCode是否相等,如果不相等,那么两个对象肯定不相等。如果相等会进一步调用equals()方法去判断他们的属性是否相等。

祝学习愉快!

  • MasonM 提问者 #1
    第三个回答的意思是这样的吗?例如,Cat这个类里面重写了hashcode方法和equals方法。 然后,it.add(cat1);it.add(cat2);在添加进it集合的时候,cat的对象就会调用hashcode方法和equals方法去判断集合it里面的数据是否有相等吗?
    2018-08-27 12:04:57
  • 好帮手慕珊 回复 提问者 MasonM #2
    添加it集合的时候,会去把要添加的对象和集合中已经存在的对象进行比较,两个cat对象比较的过程就是去调用hashCode()和equals()方法。祝学习愉快!
    2018-08-27 13:41:25
  • MasonM 提问者 回复 好帮手慕珊 #3
    噢~好的谢谢老师!
    2018-08-27 13:49:56
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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