三情况会扩容:
1、第一次put元素创建数组的时候。
2、插入节点后元素个数大于N*负载因子的时候。
3、数组小于64但是链表节点大于8。
大白话版本:
Java数组是不可变的,先创建一个2倍的数组(用n << 1)左移一位的优化计算方式。
把原数组上的节点放在新数组上。根据规律rehash优化,扩容后节点要么在原位置,要么在原来的位置+数组原长度 原来的位置连接在low链上,需要移动 i+n的在High链上。把链表挂在新数组上。
原来的Index可能是树类型,移动后长度可能小于6(hashmap)有个常量,如果长度小于6就会把树转回链表。



