1. LRU原理
LRU全称是Least Recent Use,表示最近最少使用的,该思想最初用于计算机操作系统中,内存中的容量较有限,为了能更加合理的利用内存中的性能,对用户的使用作出假设,最近最少使用的越不重要,最近使用的越有可能使用到,使得该元素更容易获取到。如果元素当前容量超过了内存最大容量,则需要删除掉最近最少使用的元素。
在其之后,许多缓存及许多分布式系统都采用才思想。
2. LRU实现
下面基于hashMap实现一个简单的非安全的LRU容器。
主要思路如下:
- 数据结构。采用hashMap(采用java自带)及双向链表(自己实现)。
- 主要功能:
- 增加元素
- 获取元素
- 删除元素
数据结构:
/**
* 节点类
* 包含四个元素:key、value、pre节点、next节点
*/
class Node{
String key;
String value;
Node pre;
Node next;
Node(String key, String value){
this.key = key;
this.value = value;
}
}
具体功能实现:
public class LruImpl {
private Node head;
private Node end;
/**
* lru容器中可以容纳最多元素
*/
private int limit;
private HashMap<String , Node > hashMap;
/**
* 初始化最大的容器
* @param limit 可以容纳最多元素
*/
public LruImpl(int limit){