linkedhashmap底层原理
时间: 2023-08-08 15:11:50 浏览: 120
2024Map集合,Stream流,File文件
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 在保持键值对的插入顺序或访问顺序的同时,仍然具备了快速的查找和插入操作。
阅读全文