目录
public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>
  
2、字段属性
①、Entry<K,V>
static class Entry<K,V> extends HashMap.Node<K,V> { Entry<K,V> before, after; Entry(int hash, K key, V value, Node<K,V> next) { super(hash, key, value, next); } }
LinkedHashMap 的每个元素都是一个 Entry,我们看到对于 Entry 继承自 HashMap 的 Node 结构,相对于 Node 结构,LinkedHashMap 多了 before 和 after 结构。
下面是Map类集合基本元素的实现演变。
  
LinkedHashMap 中 Entry 相对于 HashMap 多出的 before 和 after 便是用来维护 LinkedHashMap 插入 Entry 的先后顺序的。
②、其它属性
//用来指向双向链表的头节点transient LinkedHashMap.Entry<K,V> head; //用来指向双向链表的尾节点transient LinkedHashMap.Entry<K,V> tail; //用来指定LinkedHashMap的迭代顺序 //true 表示按照访问顺序,会把访问过的元素放在链表后面,放置顺序是访问的顺序 //false 表示按照插入顺序遍历final boolean accessOrder;
注意:这里有五个属性别搞混淆的,对于 Node next 属性,是用来维护整个集合中 Entry 的顺序。对于 Entry before,Entry after ,以及 Entry head,Entry tail,这四个属性都是用来维护保证集合顺序的链表,其中前两个before和after表示某个节点的上一个节点和下一个节点,这是一个双向链表。后两个属性 head 和 tail 分别表示这个链表的头节点和尾节点。
PS:关于双向链表的介绍,可以看这篇博客。
3、构造函数
①、无参构造
1 public LinkedHashMap() { 2 super(); 3 accessOrder = false; 4 }
调用无参的 HashMap 构造函数,具有默认初始容量(16)和加载因子(0.75)。并且设定了 acc

