27行代码,set.add(huahua01),这个添加元素的方法,在调用时是会默认调用hashCode()方法和euqals方法吗?感觉没看懂

27行代码,set.add(huahua01),这个添加元素的方法,在调用时是会默认调用hashCode()方法和euqals方法吗?感觉没看懂

正在回答 回答被采纳积分+1

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

2回答
最甜的冰 2021-11-13 10:59:21

是。将数据添加前会先进行判断,先用hashCode()判断hash值,如果hash值不一样,说明没有重复,添加成功;如果hash值一样,就在使用equals方法判断里面的内容是否一样,如果内容不一样,说明没有重复,添加成功。

Java集合--Set(基础) - 简书 (jianshu.com)

好帮手慕小明 2021-11-13 10:52:52

同学您好,

同学你好,是的,这里是调用add()方法时底层自动调用的hashCode()和equals()方法

祝同学学习愉快~

  • 能否只重写equals()方法,而不重写hashCode()方法?

    2022-01-15 04:50:14
  • 同学您好,

    这里是可以的,但是更建议同学重写equals方法的同时,也要重写hashCode方法

    1、因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的对象必须覆写 这两种方法

    2、如果自定义对象作为 Map 的键,那么必须覆写 hashCode 和 equals

    祝同学学习愉快~

    2022-01-15 09:43:27
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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