Hashmap扩容方法,机制原理
1.7版本:
- 数组额定容量为16,元素数量超过负载因子(一般为0.75)后会扩容至原有数组大小*2。
- 遍历老数组每个位置上的链表每个元素。
- 取每个元素的key根据链表长度计算出在新数组中的下表。
- 将元素添加到新数组中。
- 修改hashmap对象的table属性。
1.8版本:
- 先生成新数组。
- 遍历数组中每个位置的链表或红黑树。
- 如果是链表,重新计算每个元素对应新数组中的下标,插入新数组中。
- 如果是红黑树,先计算红黑树每个元素在新数组中的下标位置。
- 统计下标元素个数,个数超8生成新红黑树
- 个数8以内建立新链表,尾插法插入新元素
- 所有元素转移完成之后,将新数组赋值给Hashmap的table属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)