本文最后更新于60 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
当进行put时,会出现多种情况
- 如果发现目前bucket的占用程度超过了所希望的比例,且此时数组长度小于64,那么会发生扩容。(一般情况是:最容量*0.75(加载因子))
- 如果发现在put之后,对key值进行hash计算得到的链表长度在经过添加节点后长度大于等于8,且此时数组长度小于64,那么会发生扩容
其他情况不会出现扩容
扩容会新建一个数组,该数组的长度是原数组的两倍,此时会对所有元素进行判断,判断其新增的高位bit是0还是1,如果是0则放在原来索引位置,否则将索引变成原索引+新增的数组长度位置。