今天说一下LinkedHashMap的主要点,因为有同学不太清楚它和HashMap的区别。今天大概总结一下,也是方便自己进行学习。
写在前面
LinkedHashMap的内部维护了一个双向链表。可以按照元素的插入顺序进行访问,也可以按照元素的访问顺序进行访问。要注意一点的是LinkedHashMap是可以实现LRU缓存策略的,前提是你需要将LinkedHashMap中的accessorder属性设置为true。
因此你基本可以认为LinkedHashMap是LinkedList和HashMap的一个组合。
LinkedHashMap简介
LinkedHashMap继承自HashMap,拥有HashMap的特性。除此之外LinkedHashMap内部维护了一个链表,保证访问的顺序。
LinkedHashMap的内部属性
- LinkedHashMap.Entry<K,V> head,表示双向链表的头结点。
- LinkedHashMap.Entry<K,V> tail表示双向链表的尾结点。
- boolean accessOrder表示是否按照顺序访问,默认是false。false的时候是按照插入顺序进行访问,true的时候是按照访问顺序进行访问。
- 用于双向链表存储元素。
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);