带缓存的双端队列

 1 package com.company.java.cache;
 2 
 3 import java.util.Deque;
 4 import java.util.LinkedList;
 5 
 6 public class FifoCache implements Cache{
 7     private Deque<Object> keyOrders=new LinkedList<Object>();
 8     private int maxCap=1024;
 9     private Cache cache;
10     public FifoCache(Cache cache,int maxCap) {
11         this.cache=cache;
12         this.maxCap=maxCap;
13     }
14     @Override
15     public void putObject(Object key, Object value) {
16         //1.存储key
17         keyOrders.addLast(key);
18         //2.满了移除对象
19         if(size()==maxCap) {
20             Object oldKey=keyOrders.removeFirst();
21             cache.removeObject(oldKey);
22         }
23         //3.存储key/value
24         cache.putObject(key, value);
25     }
26     @Override
27     public Object getObject(Object key) {
28         return cache.getObject(key);
29     }
30     @Override
31     public Object removeObject(Object key) {
32         return cache.removeObject(key);
33     }
34     @Override
35     public int size() {
36         return cache.size();
37     }
38     @Override
39     public void clear() {
40         cache.clear();
41     }
42     @Override
43     public String toString() {
44         // TODO Auto-generated method stub
45         return cache.toString();
46     }
47     public static void main(String[] args) {
48         LogCache logCache=
49         new LogCache(new FifoCache(new PertetualCache(),3));
50         logCache.putObject("A", 100);
51         logCache.putObject("B", 200);
52         logCache.putObject("C", 300);
53         logCache.putObject("D", 400);
54         logCache.getObject("D");
55         logCache.getObject("A");
56         logCache.getObject("B");
57         System.out.println(logCache);
58     }
59     
60 
61 }