码迷,mamicode.com
首页 > 其他好文 > 详细

LRU数据结构-自定义

时间:2020-07-15 23:27:35      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:tst   stringbu   数据   private   cat   size   pre   数据结构   contain   

 

    public static void main(String[] args) {
        try {
            LRUStruct lruStruct = new LRUStruct(4);
            lruStruct.put("1", 1);
            lruStruct.put("2", 2);
            lruStruct.put("3", 3);
            lruStruct.put("4", 4);
            lruStruct.put("5", 5);
            System.out.println(lruStruct.toString());
            lruStruct.get("2");

            System.out.println(lruStruct.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    static class LRUStruct<T, W> {
        //存储key对应的list中位置,用于get时,把get的key放在最后
        private HashMap<T, Integer> existConfig = new HashMap();
        //存储实际数据
        private HashMap<T, W> data = new HashMap();
        //key位置
        private List<T> list;
        private int max;

        public LRUStruct(int count) throws Exception {
            if (count <= 0) {
                throw new Exception("count必须大于0");
            }
            this.max = count;
            this.list = new ArrayList<>(max);
        }

        public void put(T key, W value) {
            if (!existConfig.containsKey(key)) {
                this.existConfig.put(key, list.size());
                this.list.add(key);
                this.data.put(key, value);
            }
        }

        public W get(T key) {
            if (existConfig.containsKey(key)) {
                int p = existConfig.get(key);
                this.list.remove(p);
                this.list.add(key);
            }
            return data.containsKey(key) ? data.get(key) : null;
        }

        public String toString() {
            StringBuffer stringBuffer = new StringBuffer();
            for (T key : list) {
                stringBuffer.append("key=" + key).append(";value=" + data.get(key));
            }
            return stringBuffer.toString();
        }
    }
}

 

LRU数据结构-自定义

标签:tst   stringbu   数据   private   cat   size   pre   数据结构   contain   

原文地址:https://www.cnblogs.com/use-D/p/13307095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!