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;