[JAVA] Unterschied zwischen ArrayList und LinkedList

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.

Was ist ArrayList?

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

Was ist eine verknüpfte 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.

Fazit

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.

Referenz

So verwenden Sie LinkedList und ArrayList richtig ArrayList-Klasse

Recommended Posts

Unterschied zwischen ArrayList und LinkedList
Unterschied zwischen List und ArrayList
LinkedList und ArrayList
[Java] Unterschied zwischen Array und ArrayList
Unterschied zwischen EMPTY_ELEMENTDATA und DEFAULTCAPACITY_EMPTY_ELEMENTDATA in ArrayList
Unterschied zwischen vh und%
Unterschied zwischen i ++ und ++ i
[Java] Unterschied zwischen == und gleich
Unterschied zwischen CUI und GUI
Unterschied zwischen Variablen und Instanzvariablen
Unterschied zwischen Mockito-Core und Mockito-All
Unterschied zwischen Bundle und Bundle-Installation
Unterschied zwischen render und redirect_to
Unterschied zwischen .bashrc und .bash_profile
Unterschied zwischen StringBuilder und StringBuffer
Unterschied zwischen render und redirect_to
[Ruby] Unterschied zwischen get und post
Unterschied zwischen Instanzmethode und Klassenmethode
Unterschied zwischen == Operator und Methode gleich
[Java] Unterschied zwischen Hashmap und HashTable
[Terminal] Unterschied zwischen irb und pry
JavaServlet: Unterschied zwischen executeQuery und executeUpdate
[Ruby] Unterschied zwischen is_a? Und instance_of?
Unterschied zwischen dem Operator == und der Methode eqals
Grober Unterschied zwischen RSpec und Minitest
[Rails] Unterschied zwischen find und find_by
Unterschied zwischen Instanzvariable und Klassenvariable
[JAVA] Unterschied zwischen Abstract und Interface
Unterschied zwischen Thymeleaf @RestController und @Controller
Unterschied zwischen Stream Map und FlatMap
Unterschied zwischen primitivem Typ und Referenztyp
Unterschied zwischen string.getByte () und Hex.decodeHex (string.toCharaArray ())
[Java] Unterschied zwischen Closeable und AutoCloseable
[Java] Unterschied zwischen StringBuffer und StringBuilder
[Java] Unterschied zwischen Länge, Länge () und Größe ()
[Rails] Unterschied zwischen redirect_to und Rendern
[Android] Unterschied zwischen finish () und return;
Hinweis: Unterschied zwischen Ruby "p" und "Puts"
Unterschied zwischen final und Immutable in Java
[Hinweis] Unterschied zwischen Bundle-Installation und -Update
Unterschied zwischen pop () und peek () im Stapel
[Für Anfänger] Unterschied zwischen Java und Kotlin
Unterschied zwischen isEmpty und isBlank von StringUtils
Unterschied zwischen getText () und getAttribute () von Selen
Über den Unterschied zwischen irb und pry
Unterschied zwischen "|| =" und "instance_variable_defined?" Im Ruby-Memo
[Ruby] Unterschied zwischen print, put und p
[Java] Unterschied zwischen Intstream-Bereich und rangeClosed
Unterschied zwischen int und Integer in Java
[Rails] Unterschied zwischen redirect_to und render [Anfänger]
[Java] Verstehe den Unterschied zwischen List und Set
[Rails / Active Record] Über den Unterschied zwischen create und create!
[Java] Unterschied zwischen Closeable und AutoCloseable
== und gleich
Verstehe den Unterschied zwischen abstrakten Klassen und Schnittstellen!