HashMap 创建过程详解:从初始化到碰撞解决
HashMap 创建过程如下:
-
创建一个 HashMap 对象,它是一个键值对映射的容器。
-
在 HashMap 中插入键值对。当插入第一个键值对时,HashMap 会创建一个初始大小为 16 的数组,称为哈希表。
-
将键通过哈希函数转换成一个整数,称为哈希码。哈希码是用来确定键在哈希表中的位置。
-
使用哈希码确定键在数组中的位置。如果该位置已经有了其他键值对,就发生了哈希碰撞,需要解决哈希碰撞。
-
解决哈希碰撞。HashMap 使用链表的方式来解决哈希碰撞。如果哈希表中已经有了一个键值对,那么就在这个键值对的后面添加一个链表节点,将新的键值对放在链表节点中。
-
当链表的长度超过 8 时,链表会自动转换成红黑树,提高查找效率。
-
当哈希表的负载因子大于 0.75 时,HashMap 会自动扩容,将哈希表的大小增加一倍。
-
当需要删除某个键值对时,HashMap 会找到该键值对的位置,并将其从链表或红黑树中删除。
-
当需要查找某个键值对时,HashMap 会通过哈希函数计算出键的哈希码,并在哈希表中查找该键值对。如果该位置有链表或红黑树,就在链表或红黑树中查找。如果找到了,就返回该键值对的值,否则返回 null。
以上就是 HashMap 的创建过程。
原文地址: https://www.cveoy.top/t/topic/n25g 著作权归作者所有。请勿转载和采集!