JAVA集合面试分享六:LinkedHashMap实现原理详解

先给大家看张图了解一下

LinkedHashMap的实现原理是基于HashMap实现的,它在HashMap的基础上维护了一个双向链表。该双向链表保证了LinkedHashMap的迭代顺序。以下是其实现原理的详细解释:

1. 数据结构:

LinkedHashMap的数据结构主要由HashMap和双向链表组成。HashMap用于存储键值对数据,而双向链表则用于维护迭代顺序。在LinkedHashMap中,每一个Entry对象都存储在HashMap中,同时也存在于双向链表中。

2. 存储方式:

当执行put操作时,LinkedHashMap不仅会将Entry对象存储到HashMap中,还会将其添加到双向链表的尾部。这样,双向链表中的元素顺序就代表了它们的插入顺序。

3. 访问顺序:

LinkedHashMap还提供了按访问顺序排序的功能。当通过get方法访问一个元素时,该元素会被从双向链表中移除,并重新添加到链表的尾部。这样,链表头部的元素就是最近最少使用的,而尾部的元素则是最近最常使用的。

4. 迭代:

由于LinkedHashMap继承了HashMap,因此它的迭代顺序是基于双向链表的。这使得我们可以按照元素的插入顺序或者是访问顺序来迭代LinkedHashMap。

5. 性能:

由于LinkedHashMap是基于HashMap实现的,因此它的查找、插入和删除操作的时间复杂度都是O(1)。而迭代操作的时间复杂度则取决于双向链表的大小,也就是元素的数量。

总的来说,LinkedHashMap的实现原理就是在HashMap的基础上,通过维护一个双向链表来保证元素的迭代顺序。这种设计既保留了HashMap高效查找的优点,又提供了有序的迭代方式,满足了某些特定场景的需求。

查看JDK中LinkedHashMap的源码,我们发现LinkedHashMap实现了Map接口,并且其继承于HashMap,源码如下:


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

之乎者也·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值