关于HashSet的概念,参考这篇文章
1.Java中HashSet使用散列表实现的,散列表的默认大小为16,加载因子为0.75
在这里的加载因子是代表Hash表中的元素填满的程度,加载因子0.75代表当HashSet中元素达到总容量的75%就要对HashSet进行扩充了
加载因子越大,填满的元素越多,空间率用率越高,但是冲突的机会增加了,查找成本越大,查找时间越长
加载因子越小,填满的元素越少,空间利用率越低,但是冲突的机会减少了,查找成本越小,查找时间越短
2.去重原理,当HashSet add一个元素时,先获取这个元素的散列码(hashcode方法),获取元素的哈希值
情况一:放计算出的元素的存储位置目前没有任何元素存储,那么该元素可以直接存储在该位置上
情况二:如果计算出的位置目前已经有其他元素的,那么会调用钙元素的equals方法于该位置的元素在比较一次
如果equals返回值是true,那么说明该元素重复,不允许添加
如果equals返回值为false,那么说明该元素不重复,那么继续探查下一个位置是否重复,然后重复上面情况
参考文章:
Java 集合的加载因子 - White_白 - 博客园
HashSet的去重原理---Java基础_咸鱼妹-CSDN博客_hashset去重原理