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 |
|