黑马程序员技术交流社区

标题: HashSet怎样保证元素无序不重复的,详细一点哦 [打印本页]

作者: 暗夜流月    时间: 2015-10-26 21:45
标题: HashSet怎样保证元素无序不重复的,详细一点哦

作者: 新火燎塬521    时间: 2015-10-26 21:45
HashSet是哈希表结构,当一个元素要存入HashSet集合时,首先通过自身的hashCode方法算出一个值,然后通过这个值查找元素在集合中的位置,如果该位置没有元素,那么就存入。如果该位置上有元素,那么继续调用该元素的equals方法进行比较,如果equals方法返回为真,证明这两个元素是相同元素,则不存。否则则在该位置上存储2个元素(一般不可能重复)所以当一个自定义的对象想正确存入HashSet集合,那么应该重写Object的hashCode和equals。HashSet是通过hashCode()和equals()方法确保元素无序不重复的  可以理解吗?希望可以帮到你
作者: 暗夜流月    时间: 2015-10-26 21:59
你的回答勾起了我的回忆,谢谢
作者: 菊花爆满山    时间: 2015-10-29 12:38
依靠两个方法hashCode和equals方法
作者: redsifei    时间: 2015-10-30 23:20
HashSet 的add方法调用了HashMap的put方法,会调用被添加元素的HashCode和equals方法
通过这两个方法比较被添加元素是否是相等的,如果相等,就不添加
作者: 陈威    时间: 2015-10-31 23:58
使用HashCode和equals   首先通过比较地址值是否相同,如果不同,再比较equals   ,一般来说都会重写equals方法!
作者: xiaojunru    时间: 2015-12-6 23:47
来晚了,本来想来解决这个问题的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2