1. Tables为什么设计成2的幂次方
加快元素插入位置索引的查找,提升效率
2. 元素插入位置
插入的元素总是插入到table[bucketIndex]的链表头。
3. Hash计算
4. Tables何时扩容
当table中的元素size达到threshold的时候,在继续添加元素的时候,会进行扩容操作,以保证达到较好插入效果。Threshold= tableSize * loadFactor
PS:这里的size并不是tables被占用的情况,而是插入元素的多少。因为tables中的元素采用的是链表的设计。
5. 扩容后元素重新hash
e.next = newTable[i];
newTable[i] = e;//保证后插入的元素总是插入到链条头