1
2
3
4
5
6
7
8
9
10 package ch.qos.logback.classic.pattern;
11
12 import java.util.ArrayList;
13 import java.util.LinkedHashMap;
14 import java.util.List;
15 import java.util.Map;
16
17
18
19
20
21
22
23
24
25 public class LRUCache<K, V> extends LinkedHashMap<K, V> {
26 private static final long serialVersionUID = -6592964689843698200L;
27
28 final int cacheSize;
29
30 public LRUCache(int cacheSize) {
31 super((int) (cacheSize*(4.0f/3)), 0.75f, true);
32 if(cacheSize < 1) {
33 throw new IllegalArgumentException("Cache size cannnot be smaller than 1");
34 }
35 this.cacheSize = cacheSize;
36 }
37
38 protected boolean removeEldestEntry(Map.Entry eldest) {
39 return (size() > cacheSize);
40 }
41
42 List<K> keyList() {
43 ArrayList<K> al = new ArrayList<K>();
44 al.addAll(keySet());
45 return al;
46 }
47 }