Groovy LRU cache backed by LinkedHashMap
Groovy
class LruCache<K, V> extends LinkedHashMap<K, V> {
private final int maxSize
LruCache(int maxSize) {
super(16, 0.75f, true)
this.maxSize = maxSize
}
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
size() > maxSize
}
}
def cache = new LruCache<String, Integer>(2)
cache.put('a', 1)
cache.put('b', 2)
assert cache.get('a') == 1
cache.put('c', 3)
println cache.keySet()