我假設LinkedList.Clear()是O(1)在我正在處理的項目上,因爲我使用LinkedList在我的消費者中排空BlockingQueue這需要高吞吐量,之後清除並重用LinkedList。爲什麼不是LinkedList.Clear()O(1)
事實證明這種假設是錯誤的,因爲(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成員?
http://www.docjar.com/html/api/java/util/LinkedList.java.html和諧有它O(1) – Bozho 2011-03-01 22:14:53
很好的解釋,你可以在這裏找到:http://stackoverflow.com/questions/575995 /清除IMPL功能於Java類,LinkedList的。回答Jason – smas 2011-03-01 22:49:01