数据结构-Set
一、Set:特点不包含重复元素
常用功能:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
HashSet result = new HashSet(); HashSet set1 = new HashSet(); HashSet set2 = new HashSet(); result.addAll(set1); result.retainAll(set2);
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
HashSet result = new HashSet(); HashSet set1 = new HashSet(); HashSet set2 = new HashSet(); result.addAll(set1); result.removeAll(set2);
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
HashSet result = new HashSet(); HashSet set1 = new HashSet(); HashSet set2 = new HashSet(); result.addAll(set1); result.addAll(set2);
1、HashSet
HashSet基于散列表实现,散列表使用链表数组实现,每一个列表称为桶;
散列表中可以设置初始的桶数,桶数为收集散列值(HashCode值)的桶的数量;
填装因子默认0.75,当(表中填入的记录数/Hash表的长度)>填装因子时,会新建一个双倍桶数的散列来存储原散列的数据;
每一个对象都会根据HashCode方法生成一个HashCode值,每一个对象都会根据(HashCode值%桶)的值确定所要存入的桶中;
在使用contains方法求是否有该元素时,会依次访问每一个桶,根据HashCode值确定元素位于哪个桶中,再查询这个桶中的元素;