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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dingyilin 中级黑马   /  2016-12-10 23:42  /  1005 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

对HashSet总结一下下啦:
第一:HashSet的遍历只能用迭代器和增强for循环两种方式来遍历不能用普通for循环来遍历;因为HashSet有一特点就是无索引的,而普通for循环用到了size()和get()方法的结合,然而get()方法的形成需要的是索引故不能。
第二:HashSet存储字符串(基本数据类型:会自动装箱变成相应的类)和自定义对象时都可以保证元素的唯一性,但是取出来时是无序的,那这个唯一性是怎么保证的呢?原理解说如下:
我们创建好了集合对象往里面存东西,用的是add()方法,在调用add()方法来存储元素时会先调用元素(对象)的hashCode()方法得到一个哈希值:添加第一个进去时,它的哈希值没得比较就直接存到集合里去了,然后添加后面的元素进集合,同样调用它的hashCode()方法得一哈希值,此时就会拿此哈希值与集合里已有的每一个元素的哈希值进行比较:
如果没有相同的,就直接存进集合里.
如果有相同的就去调用equals()方法:若比较结果是true就不存入集合里,若是false就将元素存入集合里。如此就可以将重复的元素去掉从而保证了集合里面元素的唯一性。

3 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
wujianming 来自手机 注册黑马 2016-12-12 00:38:14
板凳
楼主厉害。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马