与1.7对比
- 数据结构:1.7是hash数组 + 链表;1.8采用hash数组 + 链表 + 红黑树;
- 数据插入:1.7头插法;1.8尾插法;
- 扩容后数据分布方式:1.7是对所有key重新hash(key的hash值的二进制 & length-1的二进制);1.8是原位置或者(原位置+oldlen)
四个关键常量(扩容&链表转红黑树)
- DEFAULT_LOAD_FACTOR 扩容因子
threshold = table长度 * 扩容因子
- TREEIFY_THRESHOLD & MIN_TREEIFY_CAPACITY 控制链表转红黑树
链表转红黑树的两个条件
- UNTREEIFY_THRESHOLD 控制红黑树转链表
头插法和尾插法对比
- 头插法会导致链表逆序&死循环(引用网络图)