企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
> 注意:当 table.length(hash桶数组长度)小于 MIN_TREEIFY_CAPACITY(默认64)时会优先扩容(扩容机制 * 2)而不是转换为红黑树 为什么链表长度大于8才扩容 链表长度大于等于 k 时,会转化为红黑树。k 不能太大,因为链表的长度过大会影响插入和查找效率;k 也不能太小,treeify 并不是一个廉价的操作,我们希望链表长度大于等于 k 的概率要足够小,这样就可以尽量避免 treeify 扩容移动node是否一定会重新计算hashcode 扩容后的table大小变为原来的两倍,接下来就是进行扩容后table的调整: 假设扩容前的table大小为2的N次方,有上述put方法解析可知,元素的table索引为其hash值的后N位确定 那么扩容后的table大小即为2的N+1次方,则其中元素的table索引为其hash值的后N+1位确定,比原来多了一位 因此,table中的元素只有两种情况: 元素hash值第N+1位为0:不需要进行位置调整 元素hash值第N+1位为1:调整至原索引的两倍位置