fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class LRUCache {
  9. LinkedHashMap<Integer, Integer> LRUMap;
  10.  
  11. public LRUCache(int capacity) {
  12. LRUMap = new LinkedHashMap<Integer, Integer>() {
  13. @Override
  14. protected boolean removeEldestEntry(Map.Entry<Integer, Integer> eldest) {
  15. System.out.println("removeEldestEntry: " + eldest + "(size: " + LRUMap.size() + ", cap: " + capacity + ")");
  16. return LRUMap.size() > capacity;
  17. }
  18. };
  19. }
  20.  
  21. public int get(int key) {
  22. System.out.println("get: " + key);
  23. if (LRUMap.containsKey(key)) {
  24. int val = LRUMap.remove(key);
  25. LRUMap.put(key, val);
  26. return val;
  27. }
  28. return -1;
  29. }
  30.  
  31. public int size() {
  32. return LRUMap.size();
  33. }
  34.  
  35. public void set(int key, int value) {
  36. System.out.println("set: " + key + "=" + value);
  37. LRUMap.put(key, value);
  38. }
  39.  
  40. public static void main(String[] args) {
  41. LRUCache c = new LRUCache(2);
  42. c.set(2,1);
  43. c.set(1,1);
  44. c.set(2,3);
  45. c.set(4,1);
  46. System.out.println("size:" + c.size());
  47. System.out.println("c:" + c.LRUMap);
  48. }
  49. }
Success #stdin #stdout 0.1s 320512KB
stdin
Standard input is empty
stdout
set: 2=1
removeEldestEntry: 2=1(size: 1, cap: 2)
set: 1=1
removeEldestEntry: 2=1(size: 2, cap: 2)
set: 2=3
set: 4=1
removeEldestEntry: 2=3(size: 3, cap: 2)
size:2
c:{1=1, 4=1}