0
点赞
收藏
分享

微信扫一扫

【集合038】linkedhashmap 是如何维护双向链表的?

陆公子521 2022-03-12 阅读 18
linkedhashmap 是如何维护双向链表的?

image-20220308190713667

数据结构:数组+单向链表+双向链表

每一个节点都是双向链表的节点,维持插入顺序。head指向第一个插入的节点,tail指向最后一个节点。

数组+单向链表是hashmap的结构,用于记录数据。

双向链表保存的是插入顺序,顺序访问。

next是用于维护数据位置的,before和after是用于维护插入顺序的。

image-20220308191112017

image-20220308192107448

image-20220308192138706

遍历分为插入方式和访问方式:

插入方式:遍历时和插入时位置固定

访问方式:put和get方法都会将当前元素移到双向链表的最后

是否使用访问顺序遍历,是通过**LinkedHashMap 的accessOrder参数控制的,true为访问顺序遍历,false为插入顺序遍历。**默认是false,插入方式遍历。如果是true,注意并发修改异常。因为get方法会修改linkedhashmap的结构。

img

举报

相关推荐

0 条评论