首页 > 系统服务 > 详细

基于LinedHashMap 实现LRUCache 缓存

时间:2019-04-05 23:48:09      阅读:175      评论:0      收藏:0      [点我收藏+]

原文链接 基于LinedHashMap 实现LRUCache 缓存

  • 基于LinkedHashMap实现LRUCache
public class LRUCache2<K, V> extends LinkedHashMap {

  private int size;

  private HashMap<K, V> map;

  public LRUCache2(int size) {
    this.size = size;
    this.map =
        new LinkedHashMap<K, V>(size, 0.75f, true) {
          @Override
          protected boolean removeEldestEntry(Map.Entry eldest) {
            return size() > size;
          }
        };
  }

  public V getValue(K key) {
    if (this.map.containsKey(key)) {
      return this.map.get(key);
    } else {
      return null;
    }
  }

  public void set(K key, V value) {
    this.map.put(key, value);
  }

  public void print() {
    this.map.forEach((k, v) -> System.out.println(k + "\t" + v));
  }
}
  • 测试案例
public class LRUCacheDemo {

  public static void main(String[] args) {
    LRUCache2<Integer, String> cache = new LRUCache2(3);
    cache.set(1, "One");
    cache.set(2, "Two");
    cache.set(3, "Three");
    cache.print();
    System.out.println("----------------------");
    // 尝试获取,提高1和3的使用率
    cache.getValue(1);
    cache.getValue(3);
    cache.getValue(3);
    // 容器已经满了,插入4的时候会覆盖最少使用的为2
    cache.set(4, "Four");
    cache.print();
  }
}

基于LinedHashMap 实现LRUCache 缓存

原文:https://www.cnblogs.com/zhoutao825638/p/10660316.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!