Neulich wurde ich gefragt, ob ich den Unterschied zwischen ArrayList und LinkedList verstehen könnte, und ich konnte nicht antworten, deshalb werde ich ihn als Memorandum veröffentlichen.
ArrayList ist eine Listenstruktur, die Arrays intern verwendet. Der Unterschied zum Standardarray besteht darin, dass Sie die Größe später ändern können. Das Lesen und Schreiben von Werten nach Indexwerten ist naturgemäß schnell, aber das Einfügen / Löschen von Elementen wird langsamer, wenn die Arraygröße zunimmt und sich die Operationsposition dem Anfang nähert.
·verdienen Jedes Element hat eine Sequenznummer und ist im Speicher indiziert, sodass Sie schnell auf ein bestimmtes Element zugreifen können.
· Fehler Wenn ein anderes Element als das Ende addiert oder subtrahiert wird, wird ein Umordnungsprozess durchgeführt, um die Sequenznummer aller nachfolgenden Elemente nach oben oder unten zu verschieben. Infolgedessen sind alle Elemente in der ArrayList weiterhin ordentlich mit allen Folgenummern von 0 bis zur Gesamtzahl der Elemente minus 1 angeordnet, aber es dauert einige Zeit, bis die Verarbeitung durchgeführt ist. Ich werde. Und die Anzahl der Prozesse nimmt proportional zur Anzahl der Elemente zu.
Methode | Überblick |
---|---|
add([int index,] E e) | Element e am angegebenen Positionsindex einfügen (am Ende einfügen, ohne dass der Index weggelassen wird) |
clear() | Entfernen Sie alle Elemente aus der Liste |
contains(Object e) | Stellen Sie fest, ob die Liste das Element o enthält |
get(int index) | be |
indexOf(Object e) | Ruft den ersten Indexwert ab, bei dem das Element o angezeigt wird |
isEmpty() | Stellen Sie fest, ob die Liste leer ist |
remove(int index|Object o) | Löschen Sie das angegebene Element |
set(int index, E e) | Stellen Sie die int-Größe des Index-Elements ein() |
int size() | Holen Sie sich die Anzahl der Elemente in der Liste |
LinkedList stellt eine Linkliste dar, die auf Elemente mit bidirektionalen Links verweist. Aufgrund seiner Natur ist das Einfügen / Löschen von Elementen schneller als ArrayList, da nur eine erneute Verknüpfung erforderlich ist. Andererseits hat es die Eigenschaft, dass es beim wahlfreien Zugriff nach Indexwerten nicht gut ist. Aus diesem Grund sollte LinkedList in Situationen verwendet werden, in denen es viele Einfüge- / Löschvorgänge gibt, und ArrayList sollte in anderen Fällen verwendet werden. Die Methoden, die in der LinkedList-Klasse verwendet werden können, sind mit ArrayList identisch. Bitte beziehen Sie sich auch darauf. Im Folgenden finden Sie ein Beispiel für das Festlegen von Elementen in LinkedList und das Lesen ihres Inhalts in der angegebenen Reihenfolge.
·verdienen Wenn Sie Elemente hinzufügen oder entfernen, ist das Umschreiben der Verknüpfungsinformationen das Ende. Sie sind daher schneller als ArrayList, da keine Verschiebungsverarbeitung durchgeführt wird.
· Fehler Da jedes Element keine Sequenznummer enthält, muss die Sequenz beim Abrufen eines bestimmten Elements einzeln von Anfang oder Ende gezählt werden, verglichen mit ArrayList, das im Voraus eine Sequenznummer enthält. Es wird viel Zeit in Anspruch nehmen.
ArrayList wird verwendet, wenn für Elemente ein Direktzugriff erforderlich ist und für Elemente im Array keine Einfüge- / Löschvorgänge erforderlich sind. LinkedList wird verwendet, wenn häufig andere Prozesse als das letzte Element hinzugefügt / gelöscht werden und kein Zugriff auf ein bestimmtes Element erforderlich ist.
So verwenden Sie LinkedList und ArrayList richtig ArrayList-Klasse
Recommended Posts