Heim >Java >JavaErste Schritte >Was sind die Unterschiede zwischen ArrayList, LinkedList und Vector?

Was sind die Unterschiede zwischen ArrayList, LinkedList und Vector?

王林
王林nach vorne
2020-08-06 16:01:034866Durchsuche

1. Analyse aus der Speicherdatenstruktur Ray: kann schnell sein Basierend auf der Suche nach Indizes, sodass die Abfrage in den meisten Fällen schnell erfolgt.

Was sind die Unterschiede zwischen ArrayList, LinkedList und Vector?Aber wenn Sie Additions- und Löschvorgänge ausführen möchten, müssen Sie alle Elemente hinter das geänderte Element verschieben, sodass der Aufwand für Additionen und Löschungen relativ groß ist und die Ausführungseffizienz der Additions- und Löschvorgänge des Arrays relativ hoch ist ist niedrig. ArrayList und Vector, die Arrays als Datenspeicherstrukturen verwenden, weisen ebenfalls eine hohe Abfragegeschwindigkeit auf (kann direkt basierend auf dem Index abgerufen werden, was schneller ist als die iterative Suche), und das Hinzufügen und Löschen ist langsam.

Verknüpfte Liste: Es ist praktisch, Elemente hinzuzufügen und zu löschen. Um ein Element hinzuzufügen oder zu löschen, müssen Sie sich nur mit den Referenzen zwischen Knoten befassen. Wenn Sie jemanden hinzufügen oder löschen möchten, müssen Sie, genau wie Menschen, die sich hintereinander Händchen halten, nur die beiden Personen in der Nähe ändern, um mit einer anderen Person Händchen zu halten. Dies hat keine Auswirkungen auf die Personen, die sich bereits an den Händen halten. Der Ressourcen- und Zeitaufwand für die Substitution ist überall gleich. Die Suche ist jedoch umständlich. Sie muss einzeln verglichen werden und kann nicht direkt anhand des Indexes durchsucht werden. LinkedList, das in einer verknüpften Listenstruktur gespeichert ist, weist ebenfalls diese Eigenschaften auf. Es ist einfach hinzuzufügen und zu löschen, aber langsam abzufragen (bezogen auf zufällige Abfragen, nicht auf sequentielle Abfragen).

2. Analyse aus der Perspektive der Vererbung

Sie alle implementieren die List-Schnittstelle, was bedeutet, dass sie alle get(int location), remove(int location) usw. implementieren, um Knoten basierend abzurufen und zu löschen auf den Indexwert „Funktion“.

(Empfohlenes Video-Tutorial:

Java-Video-Tutorial)

Es ist einfach, den Wert der Array-Struktur gemäß dem Index zu ermitteln. Die Implementierung der bidirektionalen LinkedList-Liste ist ebenfalls relativ einfach Wenn der Index groß ist, beginnen Sie mit der Suche am Anfang der Tabelle. Wenn er klein ist, beginnen Sie mit der Suche am Ende der Tabelle.

3. Analyse aus Sicht der Parallelitätssicherheit

Vektor: Thread-Sicherheit ArrayList: Nicht-Thread-Sicherheit

LinkedList: Nicht-Thread-Sicherheit Was sind die Unterschiede zwischen ArrayList, LinkedList und Vector?

Vektor: Standardmäßig , Wächst auf die doppelte Länge des ursprünglichen Arrays. Apropos Standard bedeutet, dass er die Initialisierungsgröße tatsächlich unabhängig festlegen kann.

ArrayList: Erhöht sich automatisch um 50 % des ursprünglichen Arrays.

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen ArrayList, LinkedList und Vector?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen