Я предполагал, что 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 член?