Collection源码分析(四):LinkedHashMap源码分析

点开LinkedHashMap的源码 可以看到 继承HashMap<K,V> 实现Map接口

我们注意到 在源码开头描述中有一段话

都实现了Map接口 并且区别在于linkedHashMap是一个双端队列组成

可以看见比HashMap的Entry多了两个参数 before,after

也是使用的Hash'Map的Entry构造器

包括实例化LinkedHashMap的时候调用的也是父类(HashMap)的构造器,put方法,remove方法都是走的HashMap的方法 可以看到 LinkedHashMap的内存结构与HashMap是一样的 唯一区别就是他的链表 

HashMap的Entry链表 只有一个next参数 相当于单向链表

而LinkedHashMap的链表有 after,before两个参数 相当于双向链表

可以看出 在做大量查找操作的时候  LinkedHashMap的效率要比HashMap的高 其他基本无区别

做增加操作基本等量 也就多了两个“指针”赋值 注意此处的指针 并不是真正的指针

猜你喜欢

转载自my.oschina.net/u/2970507/blog/1800404