Я предполагал, что 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 не может просто «забыть» свои элементы header.next и header.previous?