- 博客(3)
- 收藏
- 关注
原创 hashMap的寻址算法
这样的寻址算法可以使得key的HashCode均匀地分布在HashMap内部的数组中,减少了碰撞的概率,提高了查找的效率。的随机性,使得Hash值更加均匀地分布,有利于减少碰撞,提高HashMap的性能。分成高16位和低16位两部分,然后对这两部分进行异或运算。进行高低16位异或操作是指将32位的。的寻址操作时,首先会获取键的。
2023-11-22 13:45:07 216
原创 HashMap的扩容机制
(很重要,因为数组的大小变了,所以因为到求索引的下表算法的结果,重新计算之后,很大概率元素对应的数组下标位置会变化)6. 当HashMap的大小超过数组容量的一定比例(默认为负载因子,默认值为0.75)时,会触发扩容。3. 若该位置不为空,说明发生了哈希冲突,这时需要遍历链表(或红黑树),判断链表中是否存在相同的键。5. 若链表中不存在相同的键,则将新的键值对插入链表(或红黑树)中。7. 扩容时,会创建一个新的数组,新数组的大小为原数组大小的两倍。4. 若链表中存在相同的键,则将新的值覆盖原值。
2023-11-22 13:44:18 53
原创 Hashmap的put的底层原理
如果该位置已经存在其他元素(可能是单个元素或者链表、红黑树等数据结构),则需要比较键的。然后,检查该位置是否已经存在其他元素,如果不存在,则直接将新的键值对存储在该位置。如果发生了碰撞且使用的是红黑树存储冲突元素,会按照红黑树的规则进行插入操作。如果发生了碰撞且使用的是链表存储冲突元素,会将新元素追加到链表末尾;如果发生了碰撞且链表长度超过阈值,会将链表转换为红黑树存储冲突元素;若size超过数组大小*加载因子,则进行扩容操作。Hashmap的put的底层原理。内部数组中的索引位置。
2023-11-22 12:54:17 52
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人