Java - Least-Recently-Used (LRU) Cache
Hier wird ein Cache definiert, welcher 50 Elemente aufnehmen kann. Wird das 51-ste Element hinzugefügt, so wird das Element gelöscht auf welches am Längsten nicht zugegriffen wurde.
public class LRUCache { public static final int MAX_ENTRIES = 50; private Map cache; public LRUCache(){ cache = new LinkedHashMap(MAX_ENTRIES+1, 0.70f, true){ @Override public boolean removeEldestEntry(Map.Entry eldest) { return size() > MAX_ENTRIES; } }; }
Der LRUCache kann nun wie eine normale Map verwendet werden:
cache.put("key", myObject); Object o = cache.get("key");
Falls der Cache von mehreren Threads verwendet werden soll, so muss dieser synchronisiert werden:
cache = (Map) Collections.synchronizedMap(cache);