在添加元素或初始化的时候需要调用resize() 方法进行扩容,第一次添加数据初始化数组长度为16,以后每次扩容都是达到了扩容阈值,扩容阈值 = 数组长度 * 0.75
每次扩容的时候,都是扩容之前容量的2倍;
扩容之后,会创建一个数组,需要把老数组中的数据移动到新的数组中
1.没有hash冲突的节点,则直接用e.hash & (newcap - 1)计算新数组索引位置
2.如果是红黑树,那么走红黑树的添加
3.如果是链表,则需要遍历链表,可能需要拆分链表,判断(e.hash & oldCap)是否为0,如果是0,那么就停留在原始位置,否则,移动到原始位置+增加的数组大小这个位置上