HashMap底层


1.7版本:数组+链表
1.8版本:数组+链表/红黑树

1、为何要用红黑树?
红黑树用来避免Dos攻击(Dos攻击是构造一批哈希值一样的数据,他们的桶下标也一样,这时链表很长,就会影响系统性能)

2、树化阈值为何为8?
负载因子为0.75时,长度超过8时,树化的几率是亿分之6,选择8就是为了树化的几率很小

3、树化的条件?
链表树化:满足一定条件链表才会转换为红黑树,条件如下:
(1)链表长度大于8
(2)数组长度大于64

4、何时退化为链表?
在扩容时拆分树时,如树元素<=6,则会退化成链表
移除(remove)树节点时,如果根节点和他的左儿子,右儿子,左孙子,有一个为null,则退化为链表。