1、继承关系
public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>
继承了HashMap类,实现了Map接口,即LinkedHashMap具有HashMap的特点。
2、基本属性
private static final long serialVersionUID = 3801124242820219131L;
private transient Entry<K,V> header;//双向链表头节点,也即哨兵节点,里面不存储任何信息
private final boolean accessOrder;//有序性标识
由于LinkedHashMap具有accessOrder标识,因此LinkedHashMap能够实现插入、访问有序
3、构造方法(总共有5种)
1)传入的参数为初始容量,加载因子,调用了父类的构造方法,按照插入顺序
public LinkedHashMap(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor);
accessOrder = false;
}
2)传入的参数的初始容量,调用父类的构造方法,取得键值对的顺序是插入顺序
public LinkedHashMap(int initialCapacity) {
super(initialCapacity);
accessOrder = false;
}
3)无参构造,调用父类的构造方法,取得键值对的顺序是插入顺序
public LinkedHashMap() {
super();
accessOrder = false;
}
4)传入的参数是一个Map的集合,调用父类的构造方法,取得键值对的顺序是插入顺序
public LinkedHashMap(Map<? extends K, ? extends V> m) {
super(m);
accessOrder = false;
}
5)传入的参数为初始容量,加载因子,有序性标识(键值对保持顺序),调用了父类的构造方法
public LinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder) {
super(initialCapacity, loadFactor);
this.accessOrder = accessOrder;
}
从构造方法中可以看出,默认都采用插入顺序来维持取出键值对的次序。所有