HashSet底层是HashMap,第一次添加的时候,table数组扩容到16,临界值是16*加载因子(默认是0.75),到达临界值进行扩容。
HashSet<Integer> hashSet = new HashSet<>();
hashSet.add(5);
hashSet.add(2);
hashSet.add(5);
hashSet.add(8);
hashSet.add(1);
当new一个HashSet时

其实是new了一个HashMap。HashMap在存放数据时,会先计算其key的hash值,然后拿它和当前数组长度进行 & 运算得到存储的数组下标,存储的数据会散列的分布在数组空间中,是无序的,所以HashSet也是无序的。
HashSet中的add方法

// Dummy value to associate with an Object in








![NSSCTF | [SWPUCTF 2021 新生赛]jicao](https://img-blog.csdnimg.cn/direct/c94a49ce360a4ba9ba2bc00132a3cad5.png)









