Java 繼承 LinkedHashMap 實現LRU算法
import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry;/**
- 此類通過繼承 LinkedHashMap 實現LRU算法(當 accessOrder 設置成 true 時)
- @author hanshubo
- @param <K>
- @param <V> */ public class MyLinkedMap<K, V> extends LinkedHashMap<K, V> { /**
- @param accessOrder
- 設置成 true 時,為最近最少使用(LRU)算法實現, 設置成 false 時,為先進入先過期 */ public MyLinkedMap(boolean accessOrder) { super(16, 0.75f, accessOrder); }
/**
- 隊列最大容量,超過此容量時,會將最“舊”數據刪除掉 */ private static final int MAX_ENTRIES = 1000;
/**
- 重寫父類方法,實現LRU算法 */ protected boolean removeEldestEntry(Map.Entry eldest) { return size() > MAX_ENTRIES; }
public static void main(String[] args) {
MyLinkedMap<Integer, Integer> map = new MyLinkedMap<Integer, Integer>(false);
map.put(1, 0); map.put(2, 0); map.put(3, 0); map.put(4, 0); map.put(5, 0);
map.put(2, 0); map.put(1, 0);
for (Entry<Integer, Integer> e : map.entrySet()) { System.out.println(e.getKey()); }
}
}
</pre>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!