带缓存的双端队列
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 }
浙公网安备 33010602011771号