/** * Links the element to the front of the deque so that it becomes the first element. * * @param e the unlinked element */ void linkFirst(final E e) { final E f = first; first = e; if (f == null) { last = e; } else { setPrevious(f, e); setNext(e, f); } }
/** * Links the element to the back of the deque so that it becomes the last element. * * @param e the unlinked element */ void linkLast(final E e) { final E l = last; last = e; if (l == null) { first = e; } else { setNext(l, e); setPrevious(e, l); } }
@Override public void clear() { for (E e = first; e != null;) { E next = getNext(e); setPrevious(e, null); setNext(e, null); e = next; } first = last = null; }
/** Unlinks the non-null first element. */ @SuppressWarnings("NullAway") E unlinkFirst() { final E f = first; final E next = getNext(f); setNext(f, null); first = next; if (next == null) { last = null; } else { setPrevious(next, null); } return f; }
/** Unlinks the non-null last element. */ @SuppressWarnings("NullAway") E unlinkLast() { final E l = last; final E prev = getPrevious(l); setPrevious(l, null); last = prev; if (prev == null) { first = null; } else { setNext(prev, null); } return l; }
/** Unlinks the non-null element. */ void unlink(E e) { final E prev = getPrevious(e); final E next = getNext(e); if (prev == null) { first = next; } else { setNext(prev, next); setPrevious(e, null); } if (next == null) { last = prev; } else { setPrevious(next, prev); setNext(e, null); } }
/** * Links the element to the back of the deque so that it becomes the last element. * * @param e the unlinked element */ void linkLast(final E e) { final E l = last; last = e; if (l == null) { first = e; } else { setNext(l, e); setPrevious(e, l); } }
/** * Links the element to the front of the deque so that it becomes the first element. * * @param e the unlinked element */ void linkFirst(final E e) { final E f = first; first = e; if (f == null) { last = e; } else { setPrevious(f, e); setNext(e, f); } }
@Override public void clear() { for (E e = first; e != null;) { E next = getNext(e); setPrevious(e, null); setNext(e, null); e = next; } first = last = null; }
/** Unlinks the non-null last element. */ @SuppressWarnings("NullAway") E unlinkLast() { final E l = last; final E prev = getPrevious(l); setPrevious(l, null); last = prev; if (prev == null) { first = null; } else { setNext(prev, null); } return l; }
/** Unlinks the non-null first element. */ @SuppressWarnings("NullAway") E unlinkFirst() { final E f = first; final E next = getNext(f); setNext(f, null); first = next; if (next == null) { last = null; } else { setPrevious(next, null); } return f; }
/** Unlinks the non-null element. */ void unlink(E e) { final E prev = getPrevious(e); final E next = getNext(e); if (prev == null) { first = next; } else { setNext(prev, next); setPrevious(e, null); } if (next == null) { last = prev; } else { setPrevious(next, prev); setNext(e, null); } }