《Java源码分析》:LinkedHashMap
最近也即将要参加校招,因此,就准备花几天的时间专门来将我们用的比较多的集合类的源码都看下,并以写博客的形式来记录相关思路。便于以后复习。
前面刚看了下HashMap类的源码,博客在这里:http://blog.csdn.net/u010412719/article/details/51980632
Hashtable类的源码分析,博客在这里:http://blog.csdn.net/u010412719/article/details/51972602
此篇博客就是关于LinkedHashMap类的源码分析。
1、LinkedHashMap的继承结构
public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>
从结构可以看出,LinkedHashMap继承HashMap并实现了Map接口。
2、LInkedHashMap构造函数
下面几个是LinkedHashMap的构造函数,每个构造函数都是直接调用父类HashMap的构造函数来完成相应的初始化工作。唯一的不同在于对变量:accessOrder 指定为 false。
public LinkedHashMap(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor);
accessOrder = false;
}
public LinkedHashMap(int initialCapacity) {
super(initialCapacity);
accessOrder = false;
}
public LinkedHashMap() {
super();
accessOrder = false;
}
public LinkedHashMap(Map<? extends K, ? extends V> m) {
super();
accessOrder = false;
putMapEntries(m, false);
}
public LinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder) {
super(initialCapacity, loadFactor);
this.accessOrder = accessOrder;
}
构造函数中所提到的accessOrder
/**
* The iteration ordering method for this linked hash map: <tt>true</tt>
* for access-order, <tt>false</tt> for insertion-order.
*
* @serial
*/
final boolean