public CacheItem<K, V> deleteTail() { if (head.next == null) return null; CacheItem<K, V> ret = tail; tail = tail.prev; tail.next = null; ret.prev = null; ret.next = null; return ret; }
public CacheItem<K, V> deleteHead() { if (head.next == null) return null; if (head.next == tail) { tail = tail.prev; } CacheItem<K, V> ret = head.next; head.next = ret.next; if (ret.next != null) { ret.next.prev = head; } ret.next = null; ret.prev = null; return ret; }
public void delete(CacheItem<K, V> node) { if (head.next == null) return; if (node == head.next) { deleteHead(); } else if (node == tail) { deleteTail(); } else { node.prev.next = node.next; node.next.prev = node.prev; node.next = null; node.prev = null; } }
public void insertTail(CacheItem<K, V> node) { tail.next = node; node.prev = tail; node.next = null; tail = node; }