而那些被删除的旧 entry 会在哈希表执行扩缩容的时候被处理,比如哈希表满了,会申请新的存储单元,然后将处于 Active 态的哈希槽对应的 entry 搬过去,其它的则直接丢弃。 哈希表删除元素源码解析 下面我们通过源码,来感受一下字典(哈希表)是如何删除元素的。字典有一个 pop 方法,可以基于 key 弹出指定的 entry,我...
而那些被删除的旧 entry 会在哈希表执行扩缩容的时候被处理,比如哈希表满了,会申请新的存储单元,然后将处于 Active 态的哈希槽对应的 entry 搬过去,其它的则直接丢弃。 哈希表删除元素源码解析 下面我们通过源码,来感受一下字典(哈希表)是如何删除元素的。字典有一个 pop 方法,可以基于 key 弹出指定的 entry,我...
映射到索引为 5 的哈希槽的 entry 被删除,于是将 dk_indices[5] 修改为DKIX_DUMMY,即 -2,并将 dk_entries[1] 的 me_key 和 me_value 设置为 NULL,此时哈希槽变成 Dummy 态。 后续又来了一个 entry,也映射到了索引为 5 的哈希槽,发现dk_indices[5]等于 -2,处于 Dummy 态。于是将新的 entry 追加...