public void setSize(final int size) {
// TODO look for a better solution to this, see issue #335
keyMap = Collections.synchronizedMap(new LinkedHashMap<Object, Object>(size, .75F, true) {
private static final long serialVersionUID = 4267176411845948333L;
//LinkedHashMap有一个removeEldestEntry(Map.Entry eldest)方法,通过覆盖这个方法,加入一定的条件,满足条件返回true。当put进新的值方法返回true时,便移除该map中最老的键和值。
protected boolean removeEldestEntry(Map.Entry<Object, Object> eldest) {
boolean tooBig = size() > size;
if (tooBig) {
eldestKey = eldest.getKey();
}
return tooBig;
}
});
}
小结;
linkedHashMap 保证插入元素顺序
removeEldestEntry 返回结果为true时 则删除最老元素