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