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方法
HashSet基于HashMap实现,初始容量16,临界值为16 * 0.75。当达到临界值时会扩容。添加元素时,通过key的hash值与数组长度进行&运算确定存储位置,保证数据散列分布且无序。添加和移除元素涉及HashMap的相关操作。
订阅专栏 解锁全文
2160

被折叠的 条评论
为什么被折叠?



