用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 胡鵬 閱讀(630) 評論(0)  編輯  收藏 所屬分類: java基礎J2EE

          導航

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

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          agile

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 车险| 九江市| 巴中市| 桐城市| 富川| 界首市| 章丘市| 凌云县| 兴业县| 方城县| 滕州市| 固安县| 皮山县| 鲁山县| 株洲市| 孙吴县| 庄浪县| 双牌县| 淮安市| 灵武市| 方山县| 邛崃市| 香河县| 九江县| 大竹县| 武山县| 七台河市| 永泰县| 峨眉山市| 新宾| 建昌县| 阜宁县| 锦州市| 北海市| 洪雅县| 康定县| 汝阳县| 都昌县| 乌拉特中旗| 新巴尔虎右旗| 惠安县|