Ist es effizienter, Elemente aus einer Arraylist oder eine LinkedList zu entfernen?
-
10-07-2019 - |
Frage
In der Theorie ist es effizienter, Elemente aus einem ArrayList
zu entfernen oder zu einem LinkedList
?
Lösung
Es ist „einfacher“ (das heißt, effizienter), um sie von einem LinkedList
zu entfernen, weil die Entfernung von einem ArrayList
erfordert in der alle weiteren Elemente in eine neue Position bewegt Listen alle nachfolgenden Elemente des Arrays zugeordnet werden muss neuer Wert. Mit einer verknüpften Liste, nur ein Zeiger (oder zwei, mit einer doppelt verketteten Liste) muss neu zugeordnet werden.
Andere Tipps
Nun, das Entfernen eines Elements aus einer (doppelt-Linked) Liste ist O (1). Aber die Entfernung von einer Anordnung erfordert, dass die verbleibenden Elemente werden nach unten verschoben, um ein Feld in dem Array, die O (n) ist.
Das heißt, ein bestimmtes Element in einer Liste immer durch den Index ist O (n), während ein bestimmtes Element in einem Array von Index zu erhalten ist O (1).
Also, die für die tatsächliche Entfernung, wird LinkedList besser sein. Mehr Infos gibt es auf Array der im Vergleich zu LinkedList hier .