hashmap 红黑树链化
时间: 2023-08-29 15:12:08 浏览: 91
在HashMap中,当某个桶(bucket)中的链表长度达到一定阈值(默认为8),并且HashMap的容量已经超过了一个阈值(默认为64),这时链表会转化为红黑树,这个过程被称为红黑树链化。
红黑树链化的目的是为了提高在链表中查找节点的效率。在链表中查找一个节点的时间复杂度是O(n),而在红黑树中查找一个节点的时间复杂度是O(log n)。所以当链表长度过长时,将链表转化为红黑树可以提高查找节点的效率。
在HashMap中,通过判断链表的长度和HashMap的容量来确定是否进行红黑树链化。如果链表的长度小于等于8,或者HashMap的容量小于64,则不进行红黑树链化,仍然使用链表结构。
需要注意的是,如果在平时的开发中发现HashMap或ConcurrentHashMap中出现了红黑树的结构,很可能是因为哈希算法存在问题,导致冲突较多。这时我们需要对哈希算法进行改进,以减少冲突,提高性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [HashMap-链表与红黑树转换触发条件](https://blog.csdn.net/weixin_37607613/article/details/126685650)[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%"]
- *3* [HashMap之 链表转红黑树](https://blog.csdn.net/zhang2383906154/article/details/121109323)[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 ]
阅读全文