hashmap是如何put一个元素的
时间: 2024-03-15 15:41:58 浏览: 53
当我们向一个HashMap中添加一个键值对时,HashMap会首先根据键的hashcode值和HashMap的容量计算该键值对应的桶(bucket)的位置。如果该桶为空,则直接把该键值对放入桶中;如果该桶不为空,则遍历该桶中的链表,找到键与要插入的键相同的节点,然后用新值替换旧值,如果没有找到相同的键,则在链表的末尾添加一个新节点。如果链表的长度超过了阈值(默认为8),则该链表会被转化为红黑树,以提高查询效率。
相关问题
hashmap的put
HashMap的put方法是用来将key-value键值对插入到HashMap中的。具体步骤如下:
1.先,根据key的hashCode()方法计算出key的哈值。
2 然后,根据计算出的哈希值,通过位运算得到key应该存储在数组中的索引位置。
3. 如果该索引位置为空,即没有其他元素存在,直接将该键值对插入到该位置。
4. 如果该索引位置已经有其他元素存在,即发生了哈希冲突,这时就会以链表或红黑树的形式进行存储。
5. 如果该索引位置已经存在链表,则遍历链表中的每个节点,比较每个节点的key与要插入的key是否相等。如果找到了相等的key,则更新该节点的值为新的value,并结束插入操作。
6. 如果该索引位置存在红黑树,则会调用红黑树的put方法进行插入操作。
7. 如果遍历完链表或红黑树都没有找到相等的key,则将新的节点插入到链表的末尾或红黑树中。
8. 最后,如果插入操作导致链表的长度大于等于7,并且HashMap的容量大于64,则会将链表转化为红黑树,以提高查找效率。
综上所述,HashMap的put方法是根据key的哈希值将键值对插入到数组中的指定位置,如果发生了哈希冲突,则以链表或红黑树的形式进行存储,并根据需要进行链表到红黑树的转换。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [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_1"}}] [.reference_item style="max-width: 50%"]
- *2* *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_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
hashmap怎么put
HashMap是Java中的一种数据结构,它提供了一种键值对的存储方式。在HashMap中,每个键都是唯一的,而值可以重复。当我们使用put方法向HashMap中添加元素时,它会根据键的哈希值来确定元素在内部数组中的位置,并将值存储在该位置上。
具体来说,HashMap的put方法的实现步骤如下:
1. 首先,根据传入的键计算哈希值。
2. 根据哈希值找到对应的数组索引位置。
3. 如果该位置上已经存在元素,则进行链表或红黑树的操作(JDK1.8之后,当链表长度超过阈值时,会转换为红黑树)。
4. 如果该位置上没有元素,则直接将键值对存储在该位置上。
5. 如果数组容量不足以容纳新的键值对,则进行扩容操作。
需要注意的是,HashMap中的键对象需要正确地实现hashCode()和equals()方法,以确保相同的键具有相同的哈希值,并且能够正确地进行查找和比较。
阅读全文