jdk1.8之前,使用的是【数组+链表】的方式,1.8之后使用的【链表+红黑树】
默认长度(threshold):16
默认加载因子(loadFactor):0.75
默认临界值(threshold*loadFactor):16*0.75=12
链表转 红黑树 的阈值(TREEIFY_THRESHOLD):8,当链表长度达到8时,链表转成 红黑树
扩容机制:2倍扩容
触发机制1:当元素个数超过临街临界值(threshold * loadFactor)后,数组长度扩容为两倍
触发机制2:添加元素后数组中某个链表长度超过8、数组长度小于64,此时数组长度会扩容为原来的两倍。若数组总数超过64,且链表长度超过8,此时不会扩容,会将链表转成 红黑树
结构:



