实现最近使用的对象缓存的最佳方法是什么?
这里是要求和限制...
最佳答案
Java集合开箱即用提供LinkedHashMap,非常适合构建缓存。您可能在Java ME中没有此功能,但是您可以在此处获取源代码:
http://kickjava.com/src/java/util/LinkedHashMap.java.htm
如果您不能只是将其复制粘贴,那么查看它应该可以使您开始实现将其包含在移动应用程序中的功能。基本思想只是通过 map 元素包括一个链表。如果您在有人放置或获取物品时保持此更新,则可以有效地跟踪访问顺序和使用顺序。
该文档包含有关通过覆盖 removeEldestEntry(Map.Entry)
方法构建MRU缓存的说明。您真正要做的就是创建一个扩展LinkedHashMap
并覆盖如下方法的类:
private static final int MAX_ENTRIES = 100;
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > MAX_ENTRIES;
}
还有一个constructor,您可以指定是否要让该类通过插入还是使用来按顺序存储内容,因此,您的驱逐策略也有一点灵活性:
public LinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder)
将传递为用于使用顺序,将传递为用于插入顺序。