LinkedHashMap 的底层实现是基于散列表(哈希表)和双向链表的结合。
与普通的 HashMap 不同,LinkedHashMap 会维护插入元素的顺序,因此可以按照插入顺序或者访问顺序遍历元素。
一、LinkedHashMap 特点
LinkedHashMap 继承自 HashMap 类,并实现了 Map 接口和 LinkedHashMap 特有的接口。
- 保持插入顺序:LinkedHashMap 会按照插入元素的顺序来迭代元素。这个顺序可以通过构造函数参数来指定是插入顺序还是访问顺序。默认情况下,LinkedHashMap 使用插入顺序。
- 访问顺序:使用 accessOrder 参数为 true 构造一个 LinkedHashMap,可以启用访问顺序。当通过键进行访问(例如调用 get() 方法)或者通过迭代器进行遍历时,被访问的元素会被移到链表的末尾。
- 不重复。
- 迭代顺序:遍历 LinkedHashMap 的顺序与元素的插入顺序或访问顺序相同,取决于构造函数传入的参数值。
- 散列表性能:LinkedHashMap 底层使用散列表存储键值对,具有快速的插入、删除和查找操作。但是,与普通的 HashMap 相比,LinkedHashMap 所需的额外空间略多,因为它要维护链表的结构。
LinkedHashMap 提供了与 HashMap 相同的常见方法,例如 put()、get()、remove()、containsKey() 等。此外,它还提供了一些额外的方法用于控制迭代顺序,如 entrySet() 和 keySet() 方法返回的集合类可以按照插入顺序或访问顺序进行迭代。
import java.util