Hashmap扩容方法,机制原理
1.7版本:
- 数组额定容量为16,元素数量超过负载因子(一般为0.75)后会扩容至原有数组大小*2。
- 遍历老数组每个位置上的链表每个元素。
- 取每个元素的key根据链表长度计算出在新数组中的下表。
- 将元素添加到新数组中。
- 修改hashmap对象的table属性。
1.8版本:
- 先生成新数组。
- 遍历数组中每个位置的链表或红黑树。
- 如果是链表,重新计算每个元素对应新数组中的下标,插入新数组中。
- 如果是红黑树,先计算红黑树每个元素在新数组中的下标位置。
- 统计下标元素个数,个数超8生成新红黑树
- 个数8以内建立新链表,尾插法插入新元素
- 所有元素转移完成之后,将新数组赋值给Hashmap的table属性。
版权声明:本文为qq_29087399原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。