实现最近使用的对象缓存的最佳方法是什么?
这里是要求和限制…
Java集合提供了开箱即用的LinkedHashMap,非常适合构建缓存。您可能在Java ME中没有此功能,但是您可以在此处获取源代码:
http://kickjava.com/src/java/util/LinkedHashMap.java.htm
如果您不能只是将其复制粘贴,那么查看它应该可以使您开始实现将其包含在移动应用程序中的功能。基本思想只是通过地图元素包括一个链表。如果您在有人放置或获取物品时保持此更新,则可以有效地跟踪访问顺序和使用顺序。
该文档包含有关通过覆盖该removeEldestEntry(Map.Entry)方法来构建MRU缓存的说明。您真正要做的就是创建一个扩展LinkedHashMap并覆盖方法的类,如下所示:
removeEldestEntry(Map.Entry)
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 。