linkedHashMap也是map的實現,使用Iterator遍歷的時候 最先得到的是先插入的數據。
保證了數據插入的順序。
覆蓋removeEldestEntry方法,當超過這個容量的時候,
put進新的值方法返回true時,便移除該map中最老的鍵和值
Map<String, String> m = new LinkedHashMap<String, String>(20, .80f, accessOrder );
m.put("1", "my"));
保證了數據插入的順序。
public class LRUMap<K, V> extends LinkedHashMap<K, V> {
private static final long serialVersionUID = -3700466745992492679L;
private int coreSize;
public LRUMap(int coreSize) {
super(coreSize + 1, 1.1f, true);
this.coreSize = coreSize;
}
@Override
protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {
return size() > coreSize;
}
}
覆蓋removeEldestEntry方法,當超過這個容量的時候,
put進新的值方法返回true時,便移除該map中最老的鍵和值
public LinkedHashMap (int initialCapacity, float loadFactor, boolean accessOrder);
initialCapacity 初始容量
loadFactor 加載因子,一般是 0.75f
accessOrder false 基于插入順序 true 基于訪問順序(get一個元素后,這個元素被加到最后,使用了LRU 最 近最少被使用的調度算法)
如 boolean accessOrder = true;