Skip to content

LinkedHashMap

Map 接口的==哈希表==和==双向链表==实现,具有可预测的迭代顺序。

此实现与 HashMap 的不同之处在于它维护一个贯穿其所有条目的双向链表。此链表定义了迭代顺序,通常是将键插入map的顺序(插入顺序).请注意,如果键是 重新插入 进入map。 (如果调用 m.put(k, v),而 m.containsKey(k) 将在调用前立即返回 true,则将键 k 重新插入map m。)

>[!特点] >有序,不重复,无索引


在选择 LinkedHashMapHashMap 时,可以根据它们的特点和实际需求做出决策。以下从它们的主要区别、适用场景和性能角度进行详细对比,以帮助选用合适的数据结构。

LinkedHashMap 和 HashMap 的主要区别

特性HashMapLinkedHashMap
有序性无序,不能保证插入顺序或访问顺序按插入顺序(默认)或访问顺序(可选)保持有序
底层实现基于哈希表,链表用于处理哈希冲突基于哈希表 + 双向链表,用于维护顺序
性能(时间复杂度)插入、删除、查找的时间复杂度为 O(1)O(1)O(1)插入、删除、查找时间复杂度为 O(1)O(1)O(1),但有序性增加了额外的开销
内存占用较低,只存储键值对较高,维护链表需要额外存储前后指针信息
迭代顺序无固定顺序默认按插入顺序迭代,或按访问顺序迭代(开启访问顺序模式)
访问顺序支持不支持支持,可通过 LinkedHashMap 构造器启用

评论区

欢迎留言、补充或勘误。

xiaoba.blog