Java - Allgemein

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);

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007