hashmap 的 put 方法的执行过程?
时间: 2023-05-01 17:03:00 浏览: 76
hashmap 的 put 方法的执行过程是将 key 和对应的 value 转换为一个 hash 值,然后通过该 hash 值找到对应的桶,将 key-value 对存储在桶中。如果该桶中已经有其他的 key-value 对,则进行链表或红黑树的操作来解决哈希冲突。如果需要扩容,则会重新计算 hash 值并重新装载数据。
相关问题
hashmap put方法
HashMap的put方法是用来将键值对存储到HashMap中的。在put方法中,首先通过hash(key)计算出要存储的位置,然后调用putVal方法来实际执行插入操作。\[1\]
在putVal方法中,首先判断要插入的位置是否已经存在元素。如果该位置为空,则直接将键值对存储在该位置上。如果该位置已经存在元素,则需要根据具体情况进行处理。
如果该位置上的元素是一个链表,则需要遍历链表,查看是否存在与要插入的键相同的键。如果存在相同的键,则更新对应的值;如果不存在相同的键,则将新的键值对添加到链表的末尾。同时,还需要判断链表的长度是否达到了阈值,如果达到了阈值,则将链表转换为红黑树。\[2\]
如果该位置上的元素是一个红黑树节点,则将要插入的键值对封装成一个红黑树节点,并添加到红黑树上。在添加过程中,还会判断红黑树中是否已经存在相同的键,如果存在,则更新对应的值。\[3\]
总结起来,HashMap的put方法会根据键的哈希值计算出存储位置,然后根据具体情况进行插入操作,包括直接存储、链表插入和红黑树插入。
#### 引用[.reference_title]
- *1* *2* [HashMap中put方法详解](https://blog.csdn.net/lubiaojava/article/details/119780055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [HashMap的put方法](https://blog.csdn.net/AAAWell/article/details/125898104)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
hashmapPut
HashMap的put方法是用来向HashMap中插入键值对的方法。在put方法中,首先会根据键的hash值计算出该键值对在数组中的索引位置。然后,会创建一个新的Node节点来存储该键值对的信息,包括键、值以及其他相关信息。接下来,如果该索引位置已经存在节点,则会执行替换操作;如果该索引位置为空,则直接将新节点插入该位置。在插入节点的过程中,如果链表长度大于等于7并且Node数组长度大于64,则会将该链表转变成红黑树,以提高插入和查找效率。总之,HashMap的put方法是通过计算hash值来确定键值对在数组中的位置,并使用链表或者红黑树来解决hash冲突问题,并最终将键值对插入到相应位置的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [HashMap之put方法详解](https://blog.csdn.net/qq_43112598/article/details/106426120)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [HashMap put方法的源码分析](https://download.csdn.net/download/weixin_38729607/13751823)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]