1. LRU缓存
LRU是Least Recently Used 近期最少使用算法
import java.util.LinkedHashMap;
import java.util.Map;
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private static final long serialVersionUID = -1882071901467368406L;
static final int DEFAULT_INITIAL_CAPACITY = 16;
static final float DEFAULT_LOAD_FACTOR = 0.75f;
static final int DEFAULT_CACHE_SIZE = 1024;
private final int cacheSize;
public LRUCache() {
this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_CACHE_SIZE);
}
public LRUCache(int capacity, float loadFactor, int cacheSize) {
super(capacity, loadFactor, true);
this.cacheSize = cacheSize;
}
protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
return size() > cacheSize;
}
}
1. FIFO缓存
import java.util.LinkedHashMap;
public class CommonCache<K, V> extends LinkedHashMap<K, V> {
/** UID。 */
private static final long serialVersionUID = 1L;
/** 默认缓存SIZE。 */
private static final int DEFAULT_CACHE_SIZE = 1024;
/** 缓存SIZE。 */
private int cacheSize = DEFAULT_CACHE_SIZE;
/**
* 构造方法。
*/
public CommonCache() {
}
/**
* @return cacheSize
*/
public int getCacheSize() {
return cacheSize;
}
/**
* @param cacheSize
*/
public void setCacheSize(int cacheSize) {
this.cacheSize = cacheSize;
}
@Override
protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {
return size() > cacheSize;
}
}