package leetcode.LRU;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Introduction:
* LRU是Least Recently Used的缩写,
* 即最近最少使用,是一种常用的页面置换算法,
* 选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,
* 用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,
* 选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。
*/
public class LRUByLinkedHashMap<K,V> extends LinkedHashMap<K, V> implements Map<K, V>{
private static final long serialVersionUID = 1L;
public LRUByLinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder) {
super(initialCapacity, loadFactor, accessOrder);
}
@Override
protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {
if(size() > 6){
return true;
}
return false;
}
public static void main(String[] args) {
LRUByLinkedHashMap<Character, Integer> lru = new LRUByLinkedHashMap<Character, Integer>(
16, 0.75f, true);
String s = "abcdefg";
for (int i = 0; i < s.length(); i++) {
lru.put(s.charAt(i), i);
}
System.out.println("LRU中key为d的Entry的值为: " + lru.get('d'));
System.out.println("LRU的大小 :" + lru.size());
System.out.println("LRU :" + lru);
}
}
/**
* 执行过程
* a
* ab
* abc
* abcd
* abcde
* abcdef
* bcdefg
* bcefgd
*/
使用LinkedHashMap实现LRU算法
最新推荐文章于 2023-12-13 13:00:13 发布