Dies ist eine alte Version des Dokuments!


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 bisher älteste Element gelöscht.

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