LinkedHashMap集合的底层原理和特点
时间: 2023-06-06 20:08:08 浏览: 64
LinkedHashMap 是基于哈希表和双向链表实现的 Map 接口的实现类。它继承自 HashMap,因此也是基于哈希表实现的。不同之处在于,LinkedHashMap 在 HashMap 的基础上使用了双向链表,用于维护插入元素的顺序。因此,LinkedHashMap 中的元素是有序的,而且可以按照插入顺序或访问顺序进行遍历。
当使用 accessOrder 参数为 true 创建 LinkedHashMap 对象时,LinkedHashMap 会按照访问顺序维护双向链表。每次访问一个元素时,该元素会被移动到链表末尾。这样可以实现 LRU 缓存淘汰算法。此外,LinkedHashMap 中的哈希表部分与 HashMap 是一样的,使用了拉链法解决哈希冲突,具有较快的查找和插入速度。
相关问题
LinkedHashMap集合概述和特点
LinkedHashMap是Java集合框架中的一种Map实现,它继承自 HashMap 类,底层使用双向链表维护元素的顺序。特点是能够保持插入顺序,即遍历顺序与插入顺序相同,同时也支持按照访问顺序排序,即根据元素最近被访问的时间排序。其键值对是唯一的,键和值都可以为null。 对于访问顺序,可以通过构造函数或调用 afterNodeAccess、beforeNodeInsertion 等访问方法来配置。此外,LinkedHashMap 还实现了 removeEldestEntry 方法,它的作用是当元素个数超过指定阈值时,删除最不常访问的元素。
linkedhashmap底层原理
LinkedHashMap 是 Java 中的一个实现了 Map 接口的具体类,它以哈希表和双向链表的结构来存储键值对。
LinkedHashMap 的底层原理如下:
1. LinkedHashMap 继承自 HashMap,因此它同样使用了哈希表来存储键值对。
2. LinkedHashMap 维护了一个双向链表,用来保持键值对的顺序。每个节点都包含了前驱节点和后继节点的引用。
3. 在哈希表中,每个桶(bucket)都是一个链表的头节点。当发生哈希冲突时,新的键值对会被添加到链表的尾部。
4. 双向链表中的节点按照插入顺序进行排序。这意味着当遍历 LinkedHashMap 时,可以按照插入顺序或访问顺序来获取元素。
5. LinkedHashMap 还提供了一个布尔型变量 accessOrder,用于指定是按照插入顺序还是访问顺序来排序。当 accessOrder 为 true 时,表示按照访问顺序排序;为 false 时,表示按照插入顺序排序。
6. 当调用 get、put 或其他与访问相关的方法时,如果 accessOrder 为 true,则会将访问到的节点移动到链表的尾部,以保持访问顺序。
通过使用哈希表和双向链表,LinkedHashMap 在保持键值对的插入顺序或访问顺序的同时,仍然具备了快速的查找和插入操作。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)