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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lostnotes 中级黑马   /  2015-4-27 21:51  /  665 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

HashSet是如何保证元素唯一性的?

6 个回复

倒序浏览
引用类型的话通过改写hashCode()和equals()方法,这两个方法在你要存放的对象元素的实现类上改,一些特殊类如String类已经改写了这两个方法,直接存就行……至于数值类型的直接存……
回复 使用道具 举报
今天晚上刚总结的:HashSet的底层数据结构是哈希表,它依赖hashCode()和equals()两个方法判断对象唯一。首先判断对象的hashCode()值是否相同。如果不同就直接添加到集合;如果相同,继续走equals(),看返回值是true还是false,若是true说明有元素重复则该元素不添加到集合中,若是false说明元素不重复则该元素添加到集合中。
回复 使用道具 举报 1 0
hashcode()  和equals()
回复 使用道具 举报
就比如说判断一个人的名字和年龄, 装入HashSet集合中后,底层会产生一个哈希值,当有另一个学生装
回复 使用道具 举报
就比如说判断一个人的名字和年龄, 装入HashSet集合中后,底层会产生一个哈希值与之相对应,当有另一个学生装进来后会先通过HashSet集合中的hashcode()方法,判断名字是否相同,若同名会调用equals()方法 比较年龄值是否相同。保证值的唯一性 通过的就是 hashcode()方法 和equals()方法
回复 使用道具 举报
是通过 hashcode算法与equals 来保证的 元素唯一性的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马