import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
/**
* @author wh445306
* @version 1.0
* @Desciption:LRUCache 参考:https://www.cnblogs.com/lzrabbit/p/3734850.html
* @date 2021-01-06 18:06
*/
public class LRUCache <K, V>{
private final int MAX_CACHE_SIZE;
private final float DEFAULT_LOAD_FACTORY = 0.75f;
LinkedHashMap<K, V> map;
public LRUCache(int cacheSize) {
MAX_CACHE_SIZE = cacheSize;
int capacity = (int)Math.ceil(MAX_CACHE_SIZE / DEFAULT_LOAD_FACTORY) + 1;
/*
* HashMap负载因子默认即为0.75,是一个折衷的取值
* 第三个参数设置为true,代表linkedlist按访问顺序排序,可作为LRU缓存
* 第三个参数设置为false,代表按插入顺序排序,可作为FIFO缓存
*/
map = new LinkedHashMap<K, V>(capacity, DEFAULT_LOAD_FACTORY, true) {
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> elde
基于LinkedHashMap的LRU缓存实现(FIFO亦可)
最新推荐文章于 2021-03-20 15:31:19 发布