java.util.LinkedHashMap:
LinkedHashMap继承自HashMap,但它具有可预知的迭代顺序。LinkedHashMap维护着一个运行于所有条目的双重链表,此链表定义了迭代顺序,这个顺序可以是插入顺序或者是访问的顺序。基本操作和父类HashMap相似,它通过重写父类相关的方法来实现自己的双重链表特性。
LinkedHashMap中重要的字段:
1. Entry<K,V> header
在构造的时候被初始化,开始的时候header的头尾都是指向自身。
2. boolean accessOrder
迭代时的顺序,若为false则按照插入的顺序排序;若为true则按照访问的顺序排序,读的越多越在前。默认值为false,即按照插入顺序进行排序。
LinkedHashMap的构造函数:
1. LinkedHashMap(int initialCapacity, float loadFactor)
2. LinkedHashMap (int initialCapacity)
3. LinkedHashMap ()
4. LinkedHashMap (Map<? extends K, ? extends V> m)
5. LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)
LinkedHashMap调用了父类HashMap的构造方法。不同的是增加了accessOrder字段的初始化。我们可以看到,附非指定,accessOrder的默认值为false,也就是说,LinkedHashMap中元素默认的迭代顺序为放入的次序,只有当指定accessOrder为true时,元素的迭代顺序才是按照访问的频次。
LinkedHashMap继承自HashMap,但它具有可预知的迭代顺序。LinkedHashMap维护着一个运行于所有条目的双重链表,此链表定义了迭代顺序,这个顺序可以是插入顺序或者是访问的顺序。基本操作和父类HashMap相似,它通过重写父类相关的方法来实现自己的双重链表特性。
LinkedHashMap中重要的字段:
1. Entry<K,V> header
在构造的时候被初始化,开始的时候header的头尾都是指向自身。
2. boolean accessOrder
迭代时的顺序,若为false则按照插入的顺序排序;若为true则按照访问的顺序排序,读的越多越在前。默认值为false,即按照插入顺序进行排序。
LinkedHashMap的构造函数:
1. LinkedHashMap(int initialCapacity, float loadFactor)
2. LinkedHashMap (int initialCapacity)
3. LinkedHashMap ()
4. LinkedHashMap (Map<? extends K, ? extends V> m)
5. LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)
LinkedHashMap调用了父类HashMap的构造方法。不同的是增加了accessOrder字段的初始化。我们可以看到,附非指定,accessOrder的默认值为false,也就是说,LinkedHashMap中元素默认的迭代顺序为放入的次序,只有当指定accessOrder为true时,元素的迭代顺序才是按照访问的频次。