package com.algocrafts.objectcache; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Set; public class OneKeyLRUPolicy<K> implements OneKeyCachePolicy<K> { private final Set<K> accessLog = new LinkedHashSet<>(); @Override public K evictingKey(boolean cacheIsFull, K key) { K LRU = null; if (cacheIsFull && !accessLog.remove(key)) { Iterator<K> iterator = accessLog.iterator(); LRU = iterator.next(); iterator.remove(); } accessLog.add(key); return LRU; } }