Я предполагал, что LinkedList.Clear() был O (1) в проекте, над которым я работаю, поскольку я использовал LinkedList для слива BlockingQueue у моего потребителя, которому требуется высокая пропускная способность, очистка и повторное использование LinkedList впоследствии.
Оказывается, это предположение было неправильным, поскольку код (OpenJDK) делает это:
Entry<E> e = header.next;
while (e != header) {
Entry<E> next = e.next;
e.next = e.previous = null;
e.element = null;
e = next;
}
Это было немного удивительно, есть ли веская причина LinkedList.Clear не может просто "забыть" свой заголовок .next и header.previous?