标签:大于 instance 存储 容量 超过 ash amp 长度 代码
根据(n - 1) & hash计算得到插入的数组下标i,然后进行判断
那么说明当前数组下标下,没有hash冲突的元素,直接新建节点添加。
判断table[i]的首个元素是否和key一样,如果相同直接更新value。
判断table[i] 是否为treeNode,即table[i] 是否是红黑树,如果是红黑树,则直接在树中插入键值对。
上面的判断条件都不满足,说明table[i]存储的是一个链表,那么遍历链表,判断是否存在已有元素的key与插入键值对的key相等,如果是,那么更新value,如果没有,那么在链表末尾插入一个新节点。插入之后判断链表长度是否大于8,大于8的话把链表转换为红黑树。
插入成功后,判断实际存在的键值对数量size是否超多了最大容量threshold(一般是数组长度*负载因子0.75),如果超过,进行扩容。
源代码如下:
判断table[i] 是否为treeNode,即table[i] 是否是红黑树第一步
标签:大于 instance 存储 容量 超过 ash amp 长度 代码
原文地址:https://www.cnblogs.com/wbndfjj/p/13172489.html