用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

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 金昌市| 涿州市| 河南省| 鄂托克旗| 长治市| 平罗县| 莆田市| 河北区| 文成县| 琼结县| 临西县| 清丰县| 石楼县| 邵阳县| 会宁县| 平阳县| 从化市| 青河县| 沧州市| 徐州市| 苏州市| 彭泽县| 乌海市| 朝阳区| 文山县| 洛浦县| 内江市| 安庆市| 朝阳市| 南木林县| 崇左市| 长海县| 通渭县| 鄢陵县| 黄龙县| 海林市| 大邑县| 黄平县| 开鲁县| 胶州市| 天全县|