Java Collections предоставляют LinkedHashMap из коробки, что хорошо подходит для построения кэшей. Вы, вероятно, не имеете этого в Java ME, но вы можете получить исходный код здесь:
http://kickjava.com/src/java/util/LinkedHashMap.java.htm
Если вы не можете просто скопировать и вставить его, посмотрите на него, и вы начнете реализовывать его для включения в свое мобильное приложение. Основная идея состоит в том, чтобы просто включить связанный список через элементы карты. Если вы будете обновлять его каждый раз, когда кто-либо размещает или получает, вы можете эффективно отслеживать порядок доступа и порядок использования.
В документах содержатся инструкции по созданию кэша MRU путем переопределения метода 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)
Pass true для порядка использования и false для порядка ввода.