用linkList實現LRU算法

          public class LRUCache<K,V> {

              final private int capacity;
              final private Map<K,Reference<V>> map;
              final private ReentrantLock lock = new ReentrantLock();
              final private ReferenceQueue<Reference<V>> queue = new ReferenceQueue<Reference<V>>();
             
              public LRUCache(int capacity) {
           this.capacity = capacity;
           map = new LinkedHashMap<K,Reference<V>>(capacity,1f,true){
               @Override
               protected boolean removeEldestEntry(Map.Entry<K,Reference<V>> eldest) {
                   return this.size() > LRUCache.this.capacity;
               }
           };
              }
             
              public V put(K key,V value) {
           lock.lock();
           try {
            map.put(key, new SoftReference(value,queue));
            return value;
           }finally {
               lock.unlock();
           }
              }
             
              public V get(K key) {
           lock.lock();
           try {
               queue.poll();
               return map.get(key).get();
           }finally {
               lock.unlock();
           }
              }
           
              public void remove(K key) {
           lock.lock();
           try {
               map.remove(key);
           }finally {
               lock.unlock();
           }
              }

          }

          posted on 2010-08-15 20:33 胡鵬 閱讀(634) 評論(0)  編輯  收藏 所屬分類: java基礎J2EE

          導航

          <2010年8月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          agile

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 思南县| 逊克县| 利川市| 南部县| 莲花县| 景泰县| 肥城市| 吉木萨尔县| 汉沽区| 芦溪县| 临澧县| 陆丰市| 新疆| 仲巴县| 榆中县| 邳州市| 砀山县| 永泰县| 法库县| 龙泉市| 崇礼县| 灵寿县| 若尔盖县| 青州市| 长兴县| 隆子县| 广东省| 桦南县| 天柱县| 辰溪县| 渭源县| 遂宁市| 藁城市| 孟津县| 浪卡子县| 卢湾区| 德清县| 平顶山市| 临夏市| 巴楚县| 广灵县|