我假设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;
}
Run Code Online (Sandbox Code Playgroud)
这有点令人惊讶,有没有什么好的理由LinkedList.Clear不能简单地"忘记"它的header.next和header.previous成员?