Estaba asumiendo que LinkedList.Clear() era O (1) en un proyecto en el que estoy trabajando, ya que utilicé una LinkedList para drenar un BlockingQueue en mi consumidor que necesita un alto rendimiento, borrando y reutilizando LinkedList después.¿Por qué no está LinkedList.Clear() O (1)
Resulta que esa suposición era errónea, ya que el (OpenJDK) código hace esto:
Entry<E> e = header.next;
while (e != header) {
Entry<E> next = e.next;
e.next = e.previous = null;
e.element = null;
e = next;
}
Este fue un poco sorprendente, ¿hay alguna buena razón LinkedList.Clear no podía simplemente "olvidar" su cabecera .next y header.previous miembro?
http://www.docjar.com/html/api/java/util/LinkedList.java.html Harmony lo tiene O (1) – Bozho
Buena explicación que puede encontrar aquí: http://stackoverflow.com/questions/575995/clear-impl-in-javas-linkedlist. Respondido por Jason – smas