LinkedHashMap 简介

原创
2013/09/04 14:24
阅读数 167

LinkedHashMap 简介

LinkedHashMap 是在 HashMap 的基础之上(extends 于 HashMap),增加了一个用于记录插入顺序或访问顺序的链表。

查找元素操作

LinkedHashMap 覆写了 HashMap 的 get 方法。新的 get 方法增加了通过调用其内部类 EntryrecordAccess 方法来调整 LinkedHashMap 中链表中元素的顺序,使最近被访问的元素排在链表的前部(LinkedHashMap 的 accessOrder 域需要为 true,可通过构造函数指定此域的值)。

LinkedHashMap 的链表的表头始终是一个空的 Entry,其向前的指针指向的是最新的元素(最近被访问的,或者最近被插入的);向后的指针指向的最旧的元素,是可以被抛弃的。

LinkedHashMap 的这一特性,使其可以作为 LRU 缓存的实现基础,但要主要处理并发请求,因为 LinkedHashMap 和 HashMap 一样并不是并发容器。

增加元素操作

LinkedHashMap 并没有覆写 HashMap 的 put 方法,而是覆写了 addEntry 和 createEntry 这两个方法。addEntry 与 HashMap 中的 addEntry 相比,增加了移除最老元素的操作。开发人员可以通过覆写 removeEldestEntry 方法控制什么时候需要移除最老的元素。LinkedHashMap 中的实现是永远不移除。

createEntry 方法增加了向链表中增加元素的操作。

用途

LinkedHashMap 除了可以用于作为 LRU 缓存的实现基础以外。另外一个用途是,基于 LinkedHashMap 的 LinkedHashSet 可以用来在保持插入顺序的前提下移除 List 中的重复元素。

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部