Java 繼承 LinkedHashMap 實現LRU算法

jopen 9年前發布 | 1K 次閱讀 Java 算法

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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!