LinkHashMap
1.无参构造函数,访问顺序false accessOrder false: 基于插入顺序 true: 基于访问顺序
public LinkedHashMap() {
super();
accessOrder = false;
}
2.一个参数,指定量,直接调用父类构造函数初始化,访问顺序false{父类为HashMap,所以这点与HashMap相同}
public LinkedHashMap(int initialCapacity) {
super(initialCapacity);
accessOrder = false;
}
3.访问顺序为false,将map添加到linkHashMap(中间有判断长度等,将元素一个个循环添加到)
public LinkedHashMap(Map<? extends K, ? extends V> m) {
super();
accessOrder = false;
putMapEntries(m, false);
}
4.指定容量,指定负载因子,指定顺序
public LinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder) {
super(initialCapacity, loadFactor);
this.accessOrder = accessOrder;
}
简言之,LinkedHashMap是HashMap的子类,但是内部还有一个双向链表维护键值对的顺序,每个键值对既位于哈希表中,也位于双向链表中。LinkedHashMap支持两种顺序插入顺序 、 访问顺序
1.插入顺序:先添加的在前面,后添加的在后面。修改操作不影响顺序.访问顺序:所谓访问指的是get/put操作,对一 个键执行get/put操作后,其对应的键值对会移动到链表末尾,所以最末尾的是最近访问的,最开始的是最久没有被访 问的,这就是访问顺序。