LinkedHashMap的底层实现原理:
LinkedHashMap中存储的元素我们在打印时可以按照这些元素装入集合的顺序进行打印
- LinkedHashMap是HashMap类的一个子类
- LinkedHashMap可以说是在HashMap的基础上添加了一对LinkedHashMap.Entry<K,V>类型的引用before和after
底层存储单元:
LinkedHashMap中底层是通过LinkedHashMap.Entry类进行存储的
- LinkedHashMap.Entry类继承了HashMap.Node类
- LinkedHashMap.Entry类在HashMap.Node类的基础上添加了一对引用,添加了一个LinkedHashMap.Entry<K,V>类型的before和after引用,一个指向前一个添加的元素,一个指向后一个添加的元素
HashMap.Entry和LinkedHashMap的底层源码:
HashMap.Entry底层源码:
static class Node<K,V> implements Map.Entry<K,V>{
final int hash;
final K key;
V value;
Node<K,V> next;
}
LinkedHashMap底层源码:
static class Entry<K,V> entends 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)
}
}
- 上面的Entry<K,V> before,after;就是声明了两个引用,这两个引用中before指向了前一个元素,另一个after指向了后一个元素