LinkedHashMap是HashMap的子类,内部有一个双向链表维护键值对,先添加元素的在前面,后添加的元素在后面,修改不影响顺序,保持插入顺序
,按插入顺序访问,例如购物车场景。
五个构造方法4个是按插入顺序访问,另一个可以指定访问顺序
public LinkedHashMap(int initialCapacity, float loadFactor) {
}
public LinkedHashMap(int initialCapacity) {
}
public LinkedHashMap() {
}
public LinkedHashMap(Map<? extends K, ? extends V> m) {
}
//指定按访问顺序,参数true是按访问顺序
public LinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder) {
super(initialCapacity, loadFactor);
this.accessOrder = accessOrder;
}
LinkedHashMap子类继承HashMap
public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>
{
//链表头,类型是Entry静态内部类,这个类是HashMap.Entry的子类
transient LinkedHashMap.Entry<K,V> head;
//双链表的末尾
transient LinkedHashMap.Entry<K,V> head;
//表示访问顺序还是插入顺序
final boolean accessOrder;