@Override public boolean add(@NotNull T t) { QueueEntry<T> newLast = new QueueEntry<T>(t); boolean added = set.add(newLast); if (!added) return false; QueueEntry<T> oldLast = TOMB.prev; oldLast.next = newLast; newLast.prev = oldLast; newLast.next = TOMB; TOMB.prev = newLast; return true; }
@Override public boolean remove(Object o) { T t = cast(o); QueueEntry<T> entry = findEntry(t); if (entry == null) return false; QueueEntry<T> prev = entry.prev; QueueEntry<T> next = entry.next; prev.next = next; next.prev = prev; set.remove(entry); return true; }
public HashSetQueue() { TOMB.next = TOMB.prev = TOMB; }