/** * {@inheritDoc} * <p> * Beware that, unlike in most collections, this method is <em>NOT</em> a constant-time operation. */ @Override public int size() { int size = 0; for (E e = first; e != null; e = getNext(e)) { size++; } return size; }
@SuppressWarnings("NullAway") @Override @Nullable E computeNext() { return getNext(cursor); } };
@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 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); } }
/** * {@inheritDoc} * <p> * Beware that, unlike in most collections, this method is <em>NOT</em> a constant-time operation. */ @Override public int size() { int size = 0; for (E e = first; e != null; e = getNext(e)) { size++; } return size; }
@SuppressWarnings("NullAway") @Override @Nullable E computeNext() { return getNext(cursor); } };
@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 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); } }