HashSet底层源码

1、底层是hashMap,put的val都是同一个new object()对象。

HashSet底层源码

 

 2、对key的hash值做运算

HashSet底层源码

 

 3、如果没有指定数组的长度,一开始会扩容

HashSet底层源码

 

 4、数组默认长度是16,负载因子是0.75,默认负载长度是12,当单个链表长度大于8或者数组长度大于12数组就会以2倍速扩容。

HashSet底层源码

 

 5、插入元素

HashSet底层源码

 

 6、元素的长度超过了负载容量,扩容

HashSet底层源码

 

 7、转红黑树,遍历第一个节点后面的元素,需要7个,此时是插入链表上第9个元素。

HashSet底层源码

 

上一篇:Java中的HashSet


下一篇:有序表 TreeMap和TreeSet