Forgotten feature of LinkedHashMap.
Overview
LinkedHashMap has a couple of nice features. To me the most under-utilised feature as a simple cache with FIFO or LRU eviction policy.LRU Cache
A cache which evicts the Least-Recently-Used entry is useful for efficiently caching the most used entries.Map<Key, Value> cache = new LinkedHashMap<Key, Value>(16, 0.7f, true) {
private static final int MAX_ENTRIES = 100;
protected boolean removeEldestEntry(Map.Entry<Key, Value> eldest) {
return size() > MAX_ENTRIES;
}
};
This use of the constructor tell the LHM to order entries by last access.
FIFO cache
An alternative is to evict the oldest entries.Map<Key, Value> cache = new LinkedHashMap<Key, Value>() {
private static final int MAX_ENTRIES = 100;
protected boolean removeEldestEntry(Map.Entry<Key, Value> eldest) {
return size() > MAX_ENTRIES;
}
};
The default behaviour of the LHM to order entries in the order added.
Comments
Post a Comment