From 4973ae6b73f4dda805d613066dc1f484222b5703 Mon Sep 17 00:00:00 2001 From: Abhinav Sarkar Date: Fri, 28 Jun 2019 14:15:26 +0530 Subject: [PATCH] Adds LRU cache --- .../net/abhinavsarkar/algorist/LRUCache.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/main/java/net/abhinavsarkar/algorist/LRUCache.java diff --git a/src/main/java/net/abhinavsarkar/algorist/LRUCache.java b/src/main/java/net/abhinavsarkar/algorist/LRUCache.java new file mode 100644 index 0000000..0bb9111 --- /dev/null +++ b/src/main/java/net/abhinavsarkar/algorist/LRUCache.java @@ -0,0 +1,74 @@ +package net.abhinavsarkar.algorist; + +import java.util.Iterator; +import java.util.Optional; + +public class LRUCache +{ + + private final LRWCache store; + + public LRUCache(int capacity) { + this.store = new LRWCache<>(capacity); + } + + public Optional get(K key) + { + Optional val = store.get(key); + val.ifPresent(v -> put(key, v)); + return val; + } + + public void remove(K key) + { + store.remove(key); + } + + public void put(K key, V val) + { + store.put(key, val); + } + + public int size() + { + return store.size(); + } + + public Iterator iterator() + { + return store.iterator(); + } + + @Override + public String toString() + { + return store.toString(); + } + + public static void main(String[] args) + { + LRUCache cache = new LRUCache<>(4); + cache.put("a", "abhinav"); + cache.put("b", "batman"); + cache.put("c", "carol"); + cache.put("z", "zellman"); + System.out.println(cache); + + cache.put("w", "walker"); + System.out.println(cache); + + cache.put("c", "carly"); + System.out.println(cache); + + cache.put("x", "xander"); + System.out.println(cache); + + cache.get("w"); + System.out.println(cache); + + cache.put("a", "abhinav"); + System.out.println(cache); + } + + +}