有序的HashMap:LinkedHashMap

LinkedHashMap是一种结合了HashMap和双向链表的数据结构,保证了遍历顺序。它不是线程安全的,但提供有序遍历,通过内部的双向链表实现。相比于HashMap,其访问速度较慢,因为维护了额外的数据结构。
摘要由CSDN通过智能技术生成

我们知道HashMap这个数据结构根据一个指定的值查找的时间复杂度是O(1),但是有一个问题就是HashMap是无序的比如你放进去第一个值A,但是遍历Map获取到对应的位置可能是第五个位置。那有时候我们会要求能像Map一样直接取的,但是它整体遍历下来还能是一个有顺序的数据结构。

有没有这样的数据结构呢?有,这就是LinkedHashMap。

LinkedHashMap在结构上是hashmap+双向链表的一个数据结构,HashMap就是存数据该咋存数据还是怎么存的,但是额外维护一个双向链表来存先后数据,最后遍历的时候实际要以这个双向链表为准。

在这里插入图片描述

关于LinkedHashMap的几个问题:

(1)LinkedHashMap是线程安全的吗?
不是,貌似关于Map的线程安全的应该常见的只有CurrentHashMap,靠着CAS,旧值和新值比较的那种实现的。

(2)LinkedHashMap怎么做到遍历是有序的?
相当于LinkedHashMap是自己重写的重写HashMap 的迭代器,用它维护的双向链表进行迭代输出。

(3)访问速度怎么样?
肯定比不过正常的HashMap,毕竟多维护一个双向链表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值