HashMap的put方法的具体流程
时间: 2023-05-25 15:06:03 浏览: 85
你真的懂大厂面试题:HashMap吗?
HashMap的put方法的具体流程如下:
1. 首先根据key的哈希值计算出在数组中的位置(下标),如果该位置没有元素,则直接将key-value存入该位置。
2. 如果该位置已经有元素了,则需要判断当前元素的key是否与要插入的元素的key相等。
3. 如果相等,则说明这个位置已经存在一个相同的key,那么直接将value替换掉即可。
4. 如果不相等,则需要遍历该位置的链表或红黑树(HashMap在JDK1.8之后的实现中改为了使用红黑树来存储链表过长的元素),找到与要插入元素key相等的节点。
5. 如果找到了相同的key,则更新该节点的value。
6. 如果没有找到相同的key,则将新节点插入到链表或红黑树中。
7. 如果链表过长(超过8个元素)则将链表转换为红黑树,以提高元素查找效率。
8. 如果插入一个新节点导致HashMap的容量达到了负载因子(默认是0.75)的阈值,则需要进行扩容操作。
9. 扩容操作会新建一个容量为原来两倍的数组,将所有元素重新插入到新数组中,并且重新计算每个元素在数组中的位置。
阅读全文