Unterschied zwischen ArrayList und Vektor

Unterschied zwischen ArrayList und Vektor

ArrayList vs Vector

Ein Vektor implementiert Arrays, die zur Laufzeit wachsen/schrumpfen können, wenn einige Elemente hinzugefügt oder davon entfernt werden. Auf die Elemente wird mit einem Ganzzahlindex zugegriffen. Zwei Felder - Kapazitäts- und Kapazitätsinkrement, charakterisieren das Vektorspeichermanagement. Es implementiert vier Schnittstellen:
* Aufführen
* Zufallszugriff
* Klonbar
* Serialisierbare Schnittstellen

ArrayList implementiert ebenso wie Vektoren auch vier Schnittstellen. Wie Vektoren kann sich seine Größe während der Laufzeit erneut ändern. Außerdem hat es ein Feld namens Kapazität, dessen Größe so groß ist wie die Größe der ArrayList.

Sowohl Vektoren als auch ArrayList eignen sich gut zum Abrufen von Elementen aus jeder Position und auch zum Einsetzen oder Löschen von Elementen vom Ende der Containerklasse.
Aus API -Sicht sind sowohl Vektoren als auch ArrayList sehr ähnlich. Wo genau liegt genau der Unterschied zwischen den beiden? Die folgenden Punkte werden in dieser Angelegenheit etwas Licht werfen:

1. Synchronisation: Die Vektoren sind synchronisiert, aber ArrayList ist nicht. Wenn Sie Elemente aus einer ArrayList hinzufügen oder löschen, wird sie als strukturelle Modifikation bezeichnet. Wenn mehrere Threads gleichzeitig auf eine ArrayList mit einem Codeblock zugreifen, der die Liste ändert, muss die Liste extern synchronisiert werden. Kurz gesagt, Vektorinhalt sind thread-sicher, während ArrayLists nicht sind. Wenn in der Anforderung keine Thread-Safe-Sammlung erwähnt wird, sollte man sich für ArrayList als Synchronisation Treffer entscheiden. Nicht synchronisierte Arraylisten sind schnell.

2. Datenwachstum: Sowohl ArrayList- als auch Vektorelemente werden als Arrays gespeichert, aber Vektoren haben eine Standardgröße von 10, und ArrayList hat keine Standardgröße. Wenn man entweder einer ArrayList oder einem Vektor ein Element hinzufügt, besteht die Möglichkeit, dass der Unterricht keinen Raum mehr hat. In einem solchen Fall verdoppelt ein Vektor standardmäßig seine Größe, während die Größe der ArrayList um 50% steigt. Sie können bei Vektoren einen Inkrementwert festlegen, der für die ArrayList nicht möglich ist.

3. Durchqueren der Elemente: ArrayList hat hier einen Vorteil, da Sie auf die Elemente zugreifen können, indem Sie einfach einen Index verwenden. Bei Vektoren müssen Sie einen Iterator erstellen, um seine Elemente zu durchqueren.

Zusammenfassung:

1.Wenn die Containerklasse durch einen einzelnen Thread oder eine lokale Variable geändert werden soll, sollten Sie eine ArrayList verwenden.
2.Wenn auf die Containerklasse von mehreren Threads zugegriffen wird, müssen Sie ansonsten eine manuelle Synchronisation durchführen.
3.Wir können die Inkrementgröße mit dem Vektor angeben und mit der ArrayList können wir nicht.
4.Ein Vektor wird synchronisiert und eine Arraylist ist nicht.
5.Ein Vektor kann die Größe durch doppeltes erhöhen; ArrayList kann es um 50% erhöhen.