自定义类往HashSet中插入元素——equals()和hashcode()的重写问题

自定义类往HashSet中插入元素——equals()和hashcode()的重写问题

老师您好,我想请问一下当使用自定义类往HashSet中插入元素,要想实现对象不重复,只重写equals()方法就行了吗?(比如视频中的案例)或者换句话说重写hashcode()和equals()中任一一个方法就可以不重写另一个了吗?

因为网上有的资料说需要同时重写equals和hashcode这两个方法。所以我还不太清楚什么情况下需要重写hashcode(),你能举个应用场景或特殊需求的例子必须要重写hashcode()吗?

谢谢!

正在回答

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

1回答

hashcode()和equals()都需要重写。课程里是由eclipse自动重写的hashcode(),一般的我们直接用工具给我们自动重写的hashcode()就可以了。equals()的话,就需要根据程序需求来自己实现了。祝:学习愉快

  • Xavier_Wu 提问者 #1
    老师,我还有一个疑问~ Object类中的hasCode()默认是将对象的内存地址转换成相应的哈希码,那么我们自定义类重写hasCode()方法后,它的作用是什么?谢谢!
    2020-03-12 13:51:26
  • 好帮手慕雪 回复 提问者 Xavier_Wu #2
    也是生成哈希码。只不过重写时,你可以指定由哪些属性来影响这个哈希码的生成。
    2020-03-12 14:58:56
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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