浏览 1649 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2015-01-26
import java.util.LinkedHashMap; import java.util.Map; /** * LinkedHashMap默认是不删除元素的,通过重写removeEldestEntry来实现最大容量 * @author bean */ public class LRUMap<K, V> extends LinkedHashMap<K, V> { private static final long serialVersionUID = 6918023506928428613L; // 最大容量 public static int MAX_SIZE = 10; public LRUMap(int initialCapacity, float loadFactor, boolean accessOrder) { super(initialCapacity, loadFactor, accessOrder); } /** * 如果Map的尺寸大于设定的最大容量,返回true,再新加入对象时删除最老的对象 */ protected boolean removeEldestEntry(Map.Entry<K, V> eldest) { return size() > MAX_SIZE; } public static void main(String[] args) { Map<Integer, Integer> map=new LRUMap<Integer, Integer>(10,0.75f,true); LRUMap.MAX_SIZE=4; map.put(1, 1); map.put(2, 2); map.put(3, 3); map.put(4, 4); map.get(3); map.put(5, 5); for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.err.println(entry.getKey()); } //打印结果是 2 4 3 5 ,实现了LRU的功能 } } </pre> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |