LinkedHashMap底层原理 jdk1.8
时间: 2023-10-26 12:23:56 浏览: 95
java 集合源码学习,jdk1.8集合类所有的源码讲解
LinkedHashMap 是继承自 HashMap 的类,在 HashMap 的基础上通过维护一条双向链表来解决无法保持遍历顺序和插入顺序一致的问题,并提供了对访问顺序的支持。在 JDK 1.8 版本中,LinkedHashMap 使用了和 HashMap 相同的底层数据结构,即拉链式散列结构,并在解决长链表问题上引入了红黑树优化。这样,LinkedHashMap 可以提供高效的增删改查操作,并且在遍历时可以按照插入或访问的顺序进行遍历。
LinkedHashMap 的底层数据结构和 HashMap 一样,都是使用数组加链表或红黑树的方式来处理冲突。每个数组元素都是一个链表或红黑树的头节点,每个节点包含一个键值对。当插入或查找元素时,根据键的哈希值找到对应的数组下标,然后在链表或红黑树中进行操作。
在 LinkedHashMap 中,除了继承了 HashMap 的方法,还覆写了部分方法来维护双向链表。具体来说,LinkedHashMap 在 put、remove 和 get 等方法中添加了对双向链表的操作,以保证插入和访问的顺序。当插入一个新的元素时,LinkedHashMap 会将该元素插入到链表的末尾;当访问一个已有元素时,LinkedHashMap 会将该元素移动到链表的末尾。通过这种方式,LinkedHashMap 可以保持元素的插入或访问顺序,实现了有序遍历的效果。
总结起来,LinkedHashMap 的底层原理是在 HashMap 的基础上通过维护一条双向链表来实现插入和访问的顺序,而在 JDK 1.8 中,LinkedHashMap 使用了和 HashMap 相同的底层数据结构,即拉链式散列结构,并引入了红黑树优化。这样,LinkedHashMap 可以提供高效的增删改查操作,并且在遍历时可以按照插入或访问的顺序进行遍历。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [LinkedHashMap(JDK1.8)源码解析](https://blog.csdn.net/qq_41242680/article/details/114637171)[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 ]
阅读全文