【Java集合】LinkedHashMap
2017-07-23 22:31
155 查看
【Java集合】LinkedHashMap
LinkedHashMap的概述
LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。LinkedHashMap实现与HashMap的不同之处在于,它维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序。
注意,此实现不是同步的。如果多个线程同时访问链接的哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。
LinkedHashMap的实现
对于LinkedHashMap而言,它继承与HashMap、底层使用哈希表与双向链表来保存所有元素。其基本操作与父类HashMap相似,它通过重写父类相关的方法,来实现自己的链接列表特性。LinkedHashMap采用的hash算法和HashMap相同,但是它重新定义了数组中保存的元素Entry,该Entry除了保存当前对象的引用外,还保存了其上一个元素before和下一个元素after的引用,从而在哈希表的基础上又构成了双向链接列表。
LinkedHashMap.Entry的定义如下:
/** * HashMap.Node subclass for normal LinkedHashMap entries. */ static class Entry<K,V> extends HashMap.Node<K,V> { Entry<K,V> before, after; // 维护顺序性 Entry(int hash, K key, V value, Node<K,V> next) { super(hash, key, value, next); } }
三个重点实现的函数
// Callbacks to allow LinkedHashMap post-actions void afterNodeAccess(Node<K,V> p) { } void afterNodeInsertion(boolean evict) { } void afterNodeRemoval(Node<K,V> p) { }
LinkedHashMap继承于HashMap,因此也重新实现了这3个函数,顾名思义这三个函数的作用分别是:节点访问后、节点插入后、节点移除后做一些事情。
参考:
http://yikun.github.io/2015/04/02/Java-LinkedHashMap%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E5%8F%8A%E5%AE%9E%E7%8E%B0/
http://zhangshixi.iteye.com/blog/673789
相关文章推荐
- Java集合之LinkedHashMap
- Java 集合:LinkedHashMap工作原理及实现
- Java集合----LinkedHashMap的实现原理
- 【Java集合源码剖析】LinkedHashmap源码剖析
- java集合map之HashMap、HashTable、TreeMap、LinkedHashMap(一)
- 深入Java集合学习系列:LinkedHashMap的实现原理
- 深入Java集合学习系列:LinkedHashMap的实现原理
- 深入Java集合学习系列:LinkedHashMap的实现原理
- Java集合之LinkedHashMap、TreeMap介绍
- 【Java集合源码剖析】LinkedHashmap源码剖析
- Java之集合(九)LinkedHashMap
- Java集合之LinkedHashMap源码分析
- 【JAVA集合】LinkedHashMap及其源码分析
- 【Java集合源码剖析】LinkedHashmap源码剖析
- 深入Java集合学习系列:LinkedHashMap的实现原理
- Java 集合 3:LinkedHashMap工作原理及实现
- 第七篇:JAVA集合之LinkedHashmap源码剖析
- Java之集合框架 Map集合的方法以及LinkedHashMap的特性
- 深入Java集合学习系列:LinkedHashMap的实现原理
- 转:【Java集合源码剖析】LinkedHashmap源码剖析