关于何时需要重写hashCode()和equals()方法用来判断重复数据

关于何时需要重写hashCode()和equals()方法用来判断重复数据

在什么情况下,实现类HashSet在添加重复数据的时候会自动调用hashCode()和equals()进行判断,什么情况需要进行该两个方法的重写?

正在回答

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

1回答

同学你好,未重写的hashCode()和equals()方法,默认比较的是两个对象的地址,而重写hashCode()和equals()方法后,比较的是这两个对象中的属性(内容)。所以当要求HashSet中数据的属性值不重复时,就可以重写hashCode()和equals()方法。

祝学习愉快!

  • ExcelYourself 提问者 #1

    老师,我看主要都是重写equals()里的方法,然后都是默认使用source自动重写的hashCode()方法,是不是以后在自定义类里面只需要自己重写equals方法然后直接直接source自动重写的hashCode方法?


    第二就是提到了所有类都有自己的Class类,那Object类本身是所有类的父类,它自己会有Class类吗?


    2021-09-02 09:43:53
  • ExcelYourself 提问者 #2
    老师,其实hashCode()方法重不重写都无所谓吧,它本来比较的就是两个对象是不是存储在同一区域,主要是要重写equals方法,在引用类型equals默认是比较两对象地址,必须重写equals来比较对象内的内容假如两对象含有同样的hash code


    2021-09-02 09:51:40
  • 好帮手慕小尤 回复 提问者 ExcelYourself #3

    同学你好,1、没有重写的hashcode时,hashcode是根据地址进行计算的,从而equals比较的是地址。则重写hashcode之后是根据属性进行计算,则此时equals比较的也是属性。所以如果同学想要判断属性是否相同,是需要重写hashcode()方法的。

    2、是的,Object也是有对应的Class类的。

    祝学习愉快!

    2021-09-02 12:00:45
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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