Unterschied zwischen ArrayList und Vector in Java

Autor: Laura McKinney
Erstelldatum: 1 April 2021
Aktualisierungsdatum: 1 Kann 2024
Anonim
14.4 Vector vs ArrayList in Java
Video: 14.4 Vector vs ArrayList in Java

Inhalt


ArrayList und Vector sind die Klassen in der Collection Framework-Hierarchie. ArrayList und Vector werden beide verwendet, um ein dynamisches Array von Objekten zu erstellen, dessen Größe bei Bedarf erweitert werden kann. Es gibt zwei grundlegende Unterschiede zwischen ArrayList und Vector: Vector gehört zu Legacy-Klassen, die später überarbeitet wurden, um die Auflistungsklassen zu unterstützen, wohingegen eine ArrayList eine Standardauflistungsklasse ist. Ein weiterer wichtiger Unterschied ist, dass ArrayList nicht synchronisiert ist. Vektor ist synchronisiert.

Lassen Sie uns einige andere Unterschiede mit Hilfe der unten gezeigten Vergleichstabelle untersuchen.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Ähnlichkeiten
  5. Fazit

Vergleichstabelle

Grundlage für den VergleichAnordnungslisteVektor
BasicDie ArrayList-Klasse ist nicht synchronisiert.Vektorklasse ist synchronisiert.
Legacy-KlasseArrayList ist eine Standard-Collection-Klasse.Vector ist eine Legacy-Klasse, die überarbeitet wurde, um die Sammlungsklasse zu unterstützen.
KlassenerklärungKlasse ArrayListKlasse Vektor
NeuzuteilungWenn nicht angegeben, wird eine ArrayList um die Hälfte ihrer Größe erhöht.Wenn nicht angegeben, wird ein Vektor inkrementiert, um seine Größe zu verdoppeln.
PerformanceDa ArrayList nicht synchronisiert ist, arbeitet es schneller als Vector.Da Vector synchronisiert ist, arbeitet es langsamer als ArrayList.
Aufzählung / IteratorArrayList verwendet die Iterator-Schnittstelle, um die in ArrayList gespeicherten Objekte zu durchlaufen.Vector verwendet die Enumeration- und die Iterator-Schnittstelle, um die in Vectors gespeicherten Objekte zu durchlaufen.


Definition von ArrayList

ArrayList gehört zur Liste der Standardauflistungsklassen. Die Klasse ArrayList ist in der definiert java.util Paket, es erweitert die AbstractList Klasse, die auch eine Standardauflistungsklasse ist und auch implementiert wird Liste, eine in Collection Interfaces definierte Schnittstelle. In Java hat ein Standard-Array immer eine feste Länge. Das heißt einmal geschaffen; es wächst oder schrumpft nicht dynamisch. Sie sollten also die Länge des verwendeten Arrays kennen. Manchmal kann es jedoch vorkommen, dass die erforderliche Länge zur Laufzeit angezeigt wird, um diese Situation zu bewältigen, die von Java mit ArrayList eingeführt wurde.

Die ArrayList-Klasse wird zum dynamischen Erstellen eines Arrays verwendet, das die Verweise auf die Objekte enthält. Dieses Array kann bei Bedarf an Größe zunehmen. Die Klassendeklaration lautet wie folgt:


Klasse ArrayList

Hier gibt E den Objekttyp an, den ein Array enthalten soll. Das erstellte Array hat eine variable Länge und wird vergrößert oder verkleinert, wenn Objekte zur Liste hinzugefügt oder daraus entfernt werden.

Die ArrayList ist nicht synchronisiert, dh es können mehrere Threads gleichzeitig auf dem Array ausgeführt werden. Wenn beispielsweise ein Thread einen Objektverweis zum Array hinzufügt und ein anderer Thread gleichzeitig einen Objektverweis aus demselben Array entfernt. Die Erstellung eines dynamischen Arrays mit der ArrayList-Klasse:

Anordnungsliste S1 = neue ArrayList(); System.out.ln ("Anfangsgröße von S1:" + S1.size ()); S1.add ("T"); S1.add ("C"); S1.add ("H"); S1.add (1, "E"); System.out.ln ("Nach Zugabe enthält S1:" + S1); System.out.ln ("Größe von S1 nach Zugabe:" + S1.size ()); S1.Entfernen ("T"); S1.Entfernen (2); System.out.ln ("Nach dem Löschen enthält S1:" + S1); System.out.ln ("Größe von S1 nach dem Löschen:" + S1.size ()); // OutputInitial Größe von S1: 0 Nach der Addition enthält S1:; Größe von S1 nach dem Hinzufügen: 4 Nach dem Löschen enthält S1: Größe von S1 nach dem Löschen: 2

Im obigen Code können Sie das sehen; Ich habe ein Array von Objekten vom Typ String erstellt. Ich habe dem Array S1 einige Objekte mit der Methode add () hinzugefügt und später einige Objekte mit der Methode remove () gelöscht. Wenn Sie die Anfangsgröße des Arrays nicht angeben, können Sie feststellen, dass es eine Länge von "0" hat. Wie Sie sehen, vergrößert und verkleinert sich das Array, wenn Sie die Elemente hinzufügen und löschen.

Definition von Vektor

Vector ist eine Legacy-Klasse, die überarbeitet wurde, um die Auflistungsklasse in der Collection Framework-Hierarchie zu unterstützen. Die Vektorklasse wird auch in definiert java.util Paket, erweitert um AbstractList Klasse und von der implementiert Liste Schnittstelle. Die Vector-Klasse wird wie folgt deklariert:

Klasse Vektor

Hier definiert das E den Objekttyp, der in einem Array gespeichert wird. Ein mit der Vector-Klasse erstelltes Array hat eine variable Länge. Wird das Inkrement nicht angegeben, wird die Größe verdoppelt. Lassen Sie uns die Erstellung eines Arrays mit Vector verstehen.

Vektor V = neuer Vektor(1,1); V.addElement ("Tech"); V.addElement ("Differenzen"); System.out.ln ("Kapazität nach 2 Additionen:" + V.capacity ()); V.addElement ("Between"); V.addElement ("Vectors"); System.out.ln ("Aktuelle Kapazität:" + V.capacity ()); // Ausgabekapazität nach 2 Additionen: 2 Aktuelle Kapazität: 4

Im obigen Code können Sie sehen, dass ich die Größe und den Inkrement-Wert im Konstruktor von Vector besonders erwähnt habe, während ich das Array von String-Objekten deklarierte. Daher können Sie beobachten, dass das Array am Ende der Begrenzung um den Wert inkrementiert wird, der dem Konstruktor bei der Deklaration zur Verfügung gestellt wird.

  1. Es können mehrere Threads gleichzeitig auf ArrayList ausgeführt werden, daher wird dies in Betracht gezogen nicht synchronisiert. Im Gegensatz zu ArrayList kann jeweils nur ein Thread auf einen Vektor angewendet werden. daher heißt es Synchronisiert.
  2. In einer frühen Version von Java stellen einige Klassen und Schnittstellen die Methoden zum Speichern von Objekten bereit, die als Legacy-Klassen bezeichnet wurden. Vector ist eine der Legacy-Klassen von Java. Später wurden diese älteren Klassen überarbeitet, um die Collection-Klasse zu unterstützen, wohingegen die ArrayList-Klasse eine Standard-Collection-Klasse ist.
  3. Wenn das Limit eines Arrays voll ausgenutzt ist und ein neues Objekt neben dem erschöpften Array hinzugefügt wird, wächst seine Größe sowohl in ArrayList als auch in Vector. Der Unterschied besteht jedoch darin, dass in ArrayList die Größe nicht angegeben wird wird um 50% des aktuellen Arrays inkrementiert, während sich die Größe des Arrays in Vector verdoppelt, wenn der Inkrementierungswert nicht angegeben wird.
  4. Vector verwendet Enumeration und Iterator zum Durchlaufen eines Arrays, wohingegen eine ArrayList nur Iterator zum Durchlaufen eines Arrays verwendet.
  5. Da ArrayList nicht synchronisiert ist und viele Threads gleichzeitig darauf arbeiten können, ist die Leistung besser als bei Vector, bei dem jeweils nur ein Thread arbeiten kann.

Ähnlichkeiten:

  1. ArrayList und Vector sind beide im Paket java.util definiert.
  2. ArrayList und Vector erweitern beide die AbsractList-Klasse.
  3. ArrayList und Vector implementieren beide die List-Schnittstelle.
  4. ArrayList und Vectors werden beide verwendet, um ein dynamisches Array zu erstellen, das nach Bedarf wächst.
  5. ArrayList und Vector enthalten beide Objektreferenzen.

Fazit:

Abschließend möchte ich sagen, dass die Verwendung von ArrayList besser ist als die Verwendung von Vector, da sie immer schneller und besser funktioniert.