zoukankan      html  css  js  c++  java
  • 【16】LRUChache

    题目

    LRU

    思路

    LRU 大家都不陌生,操作系统的作业做过,思路就是一旦添加或者访问某个元素,则将其的“访问属性”置零,而其他元素的访问属性统统减一,这样一来,访问属性最小的元素就是最久没访问过的。
    但是,我看了下题解,似乎有个java类可以完美实现LRU 就是linkHashMap

    收获

    LinkedHashMap的构造函数:cache = new LinkedHashMap<>(capacity,0.75f,true);LinkedHashMap的三个构造函数分别是初始容量,扩容因子和是否移除旧的元素
    若要实现移除旧元素则需要重写其函数:

    protected boolean removeEldestEntry(Map.Entry eldest) {
                    if(this.size() > capacity){
                        return true;
                    }
                    return false;
             }
    

    代码

    class LRUCache {
    
        Map<Integer,Integer> cache = null;
    
        // 这个是匿名内部类
        // LinkedHashMap的三个构造函数分别是初始容量,扩容因子和是否移除旧的元素
        public LRUCache(int capacity) {
            cache = new LinkedHashMap<>(capacity,0.75f,true){
                // 必须覆盖该方法来保证移除旧的元素
                // 返回false,不删除
                @Override
                protected boolean removeEldestEntry(Map.Entry eldest) {
                    if(this.size() > capacity){
                        return true;
                    }
                    return false;
                }
            };
        }
    
        public int get(int key) {
            Integer v = this.cache.get(key);
            return v==null?-1:v.intValue();
        }
    
        public void put(int key, int value) {
            this.cache.put(key,value);
        }
    }
    
    
    个人小站:http://jun10ng.work/ 拥抱变化,时刻斗争,走出舒适圈。
  • 相关阅读:
    NLTK
    Pytorch tutorials
    LinearRegression
    Pytorch 多分类问题
    Pytorch LogisticRegressionModel BC
    Pytorch LinearModel
    DeepLearningExamples
    Machine Learning Paper
    Hadoop集群nodes unhealthy(yarn 8088)排查及解决办法
    Full Stack Deep Learning
  • 原文地址:https://www.cnblogs.com/Jun10ng/p/12369110.html
Copyright © 2011-2022 走看看