HashMap als eigener Cache - ältestes Element entfernen?

-ben-

Mitglied
Hi!

Ich möchte einen eigenen Cache implementieren. Ich habe keys und diesen sind values zugewiesen. Die Zuweisung speichere ich in einer HashMap.

Nun möchte ich eine Begrenzung der maximalen Cache Grösse einbauen. Dafür muss ich das Element, das als erstes der HashMap hinzugefügt wurde, entfernen.

Wer hat eine idee wie ich das machen kann? Oder gibt es dafür eine Datenstruktur die besser geeignet ist als eine HashMap?

danke und gruss
ben
 
Hallo!

Verwende am besten org.apache.commons.collections.map.LRUMap aus der Commons-Collections Bibliothek:
http://jakarta.apache.org/commons/collections/

Caches sind keine triviale Angelegenheit ... man sollte solche geschichten wirklich nur dann selbst implementieren, wenn einem nichts anderes übrig bleibt (wenn es beispielsweise noch nichts gibt...). Damit hält man sich sehr viel Ärger vom Hals...

Gruß Tom
 
Hallo Tom!

Danke für deinen Tipp! Muss mir die LRUMap von Apache mal angucken.

Habe noch was beim googlen gefunden: Eine LinkedHashMap könnte ebenfalls eine Lösung sein, bei der ich die Methode removeEldestEntry(Map.Entry e) überschreibe.

Gruss ben
 
Zurück