hashmap底层数据
时间: 2023-10-15 16:29:24 浏览: 97
HashMap底层数据结构在JDK1.7及之前是由数组和链表组成的,而在JDK1.8中则是由数组、链表和红黑树组成的。
在JDK1.7及之前的版本中,HashMap使用数组来存储数据,当发生哈希冲突时,会使用链表来解决。具体来说,数组的每个位置都是一个链表头节点,当多个不同的键映射到相同的位置时,它们会被添加到链表中。
而在JDK1.8中,为了提高性能,当链表长度超过一定阈值时,链表会转换成红黑树。红黑树是一种自平衡的二叉查找树,它可以在O(log n)的时间内完成查找、插入和删除操作,相比于链表,红黑树能够更快地进行操作。
需要注意的是,虽然在HashMap底层有红黑树的结构,但实际上产生这种结构的概率相对较小。因此,在JDK1.7到JDK1.8的升级中,HashMap的性能提高了约7%~8%左右。
在HashMap的实现中,通过使用计算(i = (n - 1) & hash)来确定元素应该存储在数组的哪个位置。其中,n表示数组长度,hash表示键的hashCode值。但是要注意,数组的长度必须是2的整数次幂,这样才能保证计算出的索引值能够正确地映射到数组中的位置。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [HashMap底层数据结构详解](https://blog.csdn.net/qq_42456161/article/details/122970078)[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: 100%"]
[ .reference_list ]
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)