HashMap内部维护着节点数组.虽然利于查询,但是无序.
而LinkedHashMap却修改了节点,
节点本身在数组坐标上拥有查看下一个相同hash值的节点的能力(Node本身有next的属性),
static class Node<K,V> implements Map.Entry<K,V> {
final int hash;
final K key;
V value;
Node<K,V> next;
Node(int hash, K key, V value, Node<K,V> next) {
this.hash = hash;
this.key = key;
this.value = value;
this.next = next;
}
。。。
。。。
}
但LinkedHashMap又将所有的节点串成一串,给与了befor.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);
}
}
这样,linkedHashMap的节点数组就成了这样子。