【Java集合】LinkedHashMap
来源:互联网 发布:男士双肩背包推荐 知乎 编辑:程序博客网 时间:2024/06/05 21:01
【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-actionsvoid 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
阅读全文
0 0
- Java深入集合--linkedHashMap
- Java集合框架:LinkedHashMap
- 09.Java 集合 - LinkedHashMap
- 《java集合》--LinkedHashMap
- Java集合之LinkedHashMap
- Java集合之LinkedHashMap
- 【Java集合】LinkedHashMap
- java集合之LinkedHashMap
- 68、java集合-LinkedHashMap
- java--集合--LinkedHashMap
- java集合框架系列---LinkedHashMap
- Java集合剖析之LinkedHashMap
- Java集合之LinkedHashMap总结
- Java集合-LinkedHashMap工作原理
- Java集合----LinkedHashMap的实现原理
- Core Java --集合--LinkedHashMap的实现原理
- 【Java集合源码剖析】LinkedHashmap源码剖析
- 【Java集合源码剖析】LinkedHashmap源码剖析
- react 如何获取节点内容
- CCS中如何新建Platform以及调用
- 低功耗蓝牙cc2541学习笔记之UART-3-协议栈uart发送 实验
- 分享一个Linux性能调优/诊断网站
- linux下进程间通信之管道
- 【Java集合】LinkedHashMap
- 图像与原始字节之间的转换
- Docker入门笔记-1
- codeforces Gym
- 某博主的《Thinking in Java》笔记
- 2017.7.21考试
- 论加速度的重要性
- Shadowsocks
- ls 实现-a,-l,-R参数