package edu.mit.mitmobile2;
import java.util.LinkedHashMap;
import java.util.Map;
public class FixedCache<T> extends LinkedHashMap<String, T> {
private static final long serialVersionUID = 1L;
private int mMaximum;
public FixedCache(int maximum) {
mMaximum = maximum;
}
@Override
protected boolean removeEldestEntry(Map.Entry<String, T> eldest) {
return (size() > mMaximum);
}
@Override
public T put(String key, T value) {
if(containsKey(key)) {
remove(value);
}
return super.put(key, value);
}
@Override
public T get(Object key) {
if(containsKey(key)) {
T value = super.get(key);
// push this value to the front
put((String) key, value);
return value;
}
return null;
}
}