LinkedHashMap
HashMap存储元素是无序的,而LinkedHashMap在hashmap的基础上,能够保持元素的有序性,并且能够基于LinkedHashMap实现LRU缓存
类定义
继承了HashMap类,实现了Map接口,所以LinkedHashMap大部分功能与HashMap一致,在保持元素顺序上有区别。
1  | public class LinkedHashMap<K,V>  | 
类成员变量
1  | //entry头指针  | 
构造方法
1  | //初始容量和负载因子,排序标志默认为关闭  | 
entry定义
1  | static class Entry<K,V> extends HashMap.Node<K,V> {  | 
建立链表
LinkedHashMap添加元素操作复用了HashMap的put()方法,但是重写了以下两个方法
1  | Node<K,V> newNode(int hash, K key, V value, Node<K,V> e) {  | 
删除链表节点
1  | void afterNodeRemoval(Node<K,V> e) {  | 
插入节点
此处可能涉及是否移除过期元素的处理
1  | //插入节点后如何维护链表  | 
访问顺序维护
1  | 
  | 
是否移除过期元素
1  | //需要覆盖该方法实现是否移除元素的逻辑  | 
基于LinkedHashMap实现LRUMap
1  | 
  |