Verschil tussen ArrayList en Vector in Java

Schrijver: Laura McKinney
Datum Van Creatie: 1 April 2021
Updatedatum: 1 Kunnen 2024
Anonim
14.4 Vector vs ArrayList in Java
Video: 14.4 Vector vs ArrayList in Java

Inhoud


ArrayList en Vector zijn beide klassen in de Collection Framework-hiërarchie. ArrayList en Vector, beide worden gebruikt om een ​​dynamische array van objecten te maken waar de array naar behoefte kan groeien. Er zijn twee fundamentele verschillen die ArrayList en Vector onderscheiden, is dat Vector tot Legacy-klassen behoort die later opnieuw zijn ontworpen om de collectieklassen te ondersteunen, terwijl een ArrayList een standaardcollectieklasse is. Een ander belangrijk verschil is dat ArrayList daarentegen niet-gesynchroniseerd is; Vector is gesynchroniseerd.

Laten we enkele andere verschillen bestuderen met behulp van de onderstaande vergelijkingstabel.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. overeenkomsten
  5. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingArrayListVector
basis-De klasse ArrayList is niet gesynchroniseerd.Vectorklasse is gesynchroniseerd.
Legacy-klasseArrayList is een standaardcollectieklasse.Vector is een legacy-klasse, opnieuw ontworpen om de collectieklasse te ondersteunen.
Klasse verklaringclass ArrayListklasse Vector
herverdelingIndien niet gespecificeerd, wordt een ArrayList met de helft vergroot.Indien niet gespecificeerd, wordt een vector opgehoogd om het dubbele te maken.
PrestatieOmdat ArrayList niet gesynchroniseerd is, werkt het sneller dan Vector.Aangezien Vector wordt gesynchroniseerd, werkt het langzamer dan ArrayList.
Telling / IteratorArrayList gebruikt de Iterator-interface om de objecten te doorlopen die zijn opgeslagen in ArrayList.Vector maakt gebruik van opsomming en een Iterator-interface om de in vectoren opgeslagen objecten te doorlopen.


Definitie van ArrayList

ArrayList behoort tot de lijst met standaardcollectieklassen. De klasse ArrayList is gedefinieerd in de java.util pakket, het verlengt de AbstractList klasse die ook een standaard verzamelklasse is, en die ook implementeert Lijst, een interface gedefinieerd in Collection Interfaces. In Java heeft een standaardarray altijd een vaste lengte. Dat betekent eenmaal gemaakt; het wordt niet dynamisch groter of kleiner. U moet dus de voorkennis hebben van de lengte van de array die u gebruikt. Maar soms kan het gebeuren dat de vereiste lengte tijdens runtime wordt onthuld, dus om dit soort situaties aan te pakken introduceerde java ArrayList.

De ArrayList is een klasse die wordt gebruikt voor het dynamisch maken van een array die de verwijzingen naar de objecten bevat. Deze array kan in grootte toenemen wanneer dat nodig is. De klasseverklaring is als volgt:

class ArrayList

Hier specificeert E het type objecten dat een array zal bevatten. De gecreëerde array heeft een variabele lengte en neemt toe en af ​​in grootte wanneer objecten aan de lijst worden toegevoegd of verwijderd.


De ArrayList is niet gesynchroniseerd, wat betekent dat er meerdere threads tegelijkertijd op de array kunnen werken. Als een thread bijvoorbeeld een objectreferentie aan de array toevoegt en een andere thread tegelijkertijd een objectreferentie uit dezelfde array verwijdert. Het maken van een dynamische array met de klasse ArrayList:

ArrayList S1 = nieuwe ArrayList(); System.out.ln ("Oorspronkelijke grootte van S1:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.ln ("Na toevoeging bevat S1:" + S1); System.out.ln ("Grootte van S1 na toevoeging:" + S1.size ()); S1.remove ("T"); S1. Verwijderen (2); System.out.ln ("Na verwijdering bevat S1:" + S1); System.out.ln ("Grootte van S1 na verwijdering:" + S1.size ()); // Uitvoer Beginwaarde van S1: 0 Na toevoeging bevat S1:; Grootte van S1 na toevoeging: 4 Na verwijdering S1 bevat: Grootte van S1 na verwijdering: 2

In de bovenstaande code kunt u dat zien; Ik heb een reeks objecten van het type string gemaakt. Ik heb enkele objecten aan de array S1 toegevoegd met de methode add () en later enkele objecten verwijderd met de methode remove (). U kunt observeren dat als u niet de initiële grootte van de array opgeeft, deze een lengte van '0' zal hebben. Zoals u kunt zien, wordt de array groter en kleiner als u de elementen toevoegt en verwijdert.

Definitie van Vector

Vector is een Legacy-klasse die opnieuw is ontworpen om de collectieklasse in de Collection Framework-hiërarchie te ondersteunen. De vectorklasse is ook gedefinieerd in java.util pakket, uitgebreid met AbstractList klasse en geïmplementeerd door de Lijst koppel. De Vector-klasse wordt als volgt verklaard:

klasse Vector

Hier definieert de E het type object dat in een array wordt opgeslagen. Een array met de Vector-klasse heeft een variabele lengte. Het wordt dubbel zo groot als het increment niet is opgegeven. Laten we het maken van een array met Vector begrijpen.

Vector V = nieuwe vector(1,1); V.addElement ( "Tech"); V.addElement ( "afwijkingen"); System.out.ln ("Capaciteit na toevoeging 2:" + V.capaciteit ()); V.addElement ( "Between"); V.addElement ( "vectoren"); System.out.ln ("Huidige capaciteit:" + V.capaciteit ()); // Uitvoercapaciteit na toevoeging 2: 2 Huidige capaciteit: 4

In bovenstaande code kun je zien dat ik met name de grootte en incrementwaarde in de constructor van Vector respectievelijk heb genoemd, terwijl ik de array van stringobjecten declareerde. Vandaar dat u kunt zien dat naarmate de limiet van de array eindigt, deze wordt verhoogd met de waarde die tijdens de declaratie aan de constructor wordt verstrekt.

  1. Meerdere threads kunnen tegelijkertijd op ArrayList werken en daarom wordt dit overwogen unsynchronized. In tegenstelling tot ArrayList kan slechts een enkele thread tegelijkertijd op een vector werken; vandaar wordt het genoemd gesynchroniseerd.
  2. In een vroege versie van Java zouden sommige klassen en interfaces de methoden bieden om objecten op te slaan die ze Legacy-klassen werden genoemd. Vector behoort tot de Legacy-klasse van Java. Later werden deze legacy-klassen opnieuw ontworpen om de Collection-klasse te ondersteunen, terwijl de ArrayList-klasse een standaard Collection-klasse is.
  3. Wanneer de limiet van een array volledig wordt gebruikt en een nieuw object naast de uitgeputte array wordt toegevoegd, neemt de grootte in beide gevallen toe, dwz in ArrayList en in Vector, maar het verschil is dat in ArrayList de grootte wordt opgegeven, als deze niet wordt opgegeven wordt verhoogd met 50% van de huidige array, terwijl in Vector-array de grootte wordt verdubbeld als de incrementwaarde niet is opgegeven.
  4. Vector gebruikt Enumeratie en Iterator om een ​​reeks te doorkruisen, terwijl een ArrayList alleen iterator gebruikt voor het doorlopen van een reeks.
  5. Omdat ArrayList niet gesynchroniseerd is en veel threads er tegelijkertijd op kunnen werken, zijn de prestaties beter dan Vector waarop slechts één thread tegelijk kan werken.

overeenkomsten:

  1. ArrayList en Vector zijn beide gedefinieerd in het pakket java.util.
  2. ArrayList en Vector breiden beide de klasse AbsractList uit.
  3. ArrayList en Vector implementeren beide de lijstinterface.
  4. ArrayList en vectoren worden beide gebruikt om een ​​dynamische array te maken die groeit zoals vereist.
  5. ArrayList en Vector bevatten beide objectverwijzingen.

Gevolgtrekking:

Ik concludeer door te zeggen dat het gebruik van ArrayList beter is dan het gebruik van Vector omdat het sneller en beter presteert.