removeEldestEntry在使用put或者putAll方法插入一個新的entry到map中時被呼叫,是否要刪除年老的entry取決於是否滿足既定的條件(比如本例中的條件:MAP中entry數量大於1000)。如果MAP表示快取,這是有用的:它允許MAP通過刪除過時條目來減少記憶體消耗。
import java.util.LinkedHashMap; import java.util.Map; public class LruCache { private final Map<Object, Object> store; private static final int MAX = 1000; public LruCache() { this.store = new LinkedHashMap<Object, Object>() { private static final long serialVersionUID = -3834209229668463829L;; /** * 當滿足一定條件時刪除Map中的年老的Entry */ @Override protected boolean removeEldestEntry(Entry<Object, Object> eldest) { return size() > MAX; } }; } public void put(Object key, Object value) { synchronized (LruCache.class) { store.put(key, value); } } public Object get(Object key) { synchronized (LruCache.class) { return store.get(key); } } }