源码学习day05(LinkedHashMap)

31 阅读1分钟

源码学习day05(LinkedHashMap)

相关参数

LinkedHashMap是由数组加双向链表加红黑树构成的

/**
* 相比于HashMap的node,LinkedHashMap的节点增加了before和after节点,用
* 来构造每个数值间的相互关系
*/
 	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);
        }
    }
	/**
	*	定义头节点
	*/
	transient LinkedHashMap.Entry<K,V> head;

    /**
     *  定义为尾节点
     */
    transient LinkedHashMap.Entry<K,V> tail;

    /**
     * 定义输出的循序,是否按输入的顺序进行输出
     * 
     */
    final boolean accessOrder;

构造器

   /**
     *  有参构造器,因为LinkedHashMap继承了HashMap因此在这个构造器中
     *  显示的调用了HashMap的有参构造器 
     */
  public LinkedHashMap(int initialCapacity, float loadFactor) {
        super(initialCapacity, loadFactor);
        accessOrder = false;
    }

    /**
     *  有参构造器,同样调用了HashMap的有参构造器
     */
    public LinkedHashMap(int initialCapacity) {
        super(initialCapacity);
        accessOrder = false;
    }

    /**
     * 无参构造器,调用了HashMap的无参构造器
     */
    public LinkedHashMap() {
        super();
        accessOrder = false;
    }

主要代码解析

在这里插入代码片