A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

暗夜流月

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

10黑马币

最佳答案

查看完整内容

HashSet是哈希表结构,当一个元素要存入HashSet集合时,首先通过自身的hashCode方法算出一个值,然后通过这个值查找元素在集合中的位置,如果该位置没有元素,那么就存入。如果该位置上有元素,那么继续调用该元素的equals方法进行比较,如果equals方法返回为真,证明这两个元素是相同元素,则不存。否则则在该位置上存储2个元素(一般不可能重复)所以当一个自定义的对象想正确存入HashSet集合,那么应该重写Object的hashCode和eq ...

6 个回复

正序浏览
来晚了,本来想来解决这个问题的
回复 使用道具 举报
使用HashCode和equals   首先通过比较地址值是否相同,如果不同,再比较equals   ,一般来说都会重写equals方法!
回复 使用道具 举报
HashSet 的add方法调用了HashMap的put方法,会调用被添加元素的HashCode和equals方法
通过这两个方法比较被添加元素是否是相等的,如果相等,就不添加
回复 使用道具 举报
依靠两个方法hashCode和equals方法
回复 使用道具 举报
你的回答勾起了我的回忆,谢谢
回复 使用道具 举报
HashSet是哈希表结构,当一个元素要存入HashSet集合时,首先通过自身的hashCode方法算出一个值,然后通过这个值查找元素在集合中的位置,如果该位置没有元素,那么就存入。如果该位置上有元素,那么继续调用该元素的equals方法进行比较,如果equals方法返回为真,证明这两个元素是相同元素,则不存。否则则在该位置上存储2个元素(一般不可能重复)所以当一个自定义的对象想正确存入HashSet集合,那么应该重写Object的hashCode和equals。HashSet是通过hashCode()和equals()方法确保元素无序不重复的  可以理解吗?希望可以帮到你

评分

参与人数 1黑马币 +10 收起 理由
暗夜流月 + 10 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马