Laten we enkele andere verschillen bestuderen met behulp van de onderstaande Vergelijkingskaart.
Vergelijkingstabel
Basis voor vergelijking | ArrayList | Vector |
---|---|---|
basis- | ArrayList-klasse is niet gesynchroniseerd. | Vectorklasse is gesynchroniseerd. |
Erfenisklasse | ArrayList is een standaardcollectie. | Vector is een oudere klasse, opnieuw ontworpen om de verzamelklasse te ondersteunen. |
Klasse verklaring | klasse ArrayList | klasse Vector |
herverdeling | Indien niet gespecificeerd, wordt een ArrayList met de helft van de grootte opgehoogd. | Indien niet gespecificeerd, wordt een vector verhoogd om de grootte ervan te verdubbelen. |
Prestatie | Omdat ArrayList niet is gesynchroniseerd, werkt deze sneller dan Vector. | Omdat Vector wordt gesynchroniseerd, werkt het langzamer dan ArrayList. |
Telling / Iterator | ArrayList gebruikt de Iterator-interface om de objecten te doorlopen die zijn opgeslagen in ArrayList. | Vector maakt gebruik van zowel Enumeratie als Iterator-interface om de objecten in Vectoren te doorkruisen. |
Definitie van ArrayList
ArrayList behoort tot de lijst met standaardcollectieklassen. De klasse ArrayList wordt gedefinieerd in het pakket java.util, het breidt de klasse AbstractList uit, die ook een standaardverzamelingklasse is, en implementeert ook List, een interface die is gedefinieerd in de collectie-interfaces. In Java heeft een standaardarray altijd een vaste lengte. Dat betekent ooit gemaakt; het groeit niet dynamisch of krimpt niet in grootte. U moet dus de voorafgaande kennis hebben van de lengte van de array die u gebruikt. Maar soms kan het gebeuren dat de vereiste lengte wordt onthuld tijdens runtime, dus om met dit soort situaties om te gaan, 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 naar behoefte in grootte groeien. De klassenverklaring is als volgt:
klasse ArrayList
Hier specificeert E het type objecten dat een array zal bevatten. De gemaakte array heeft een variabele lengte en neemt toe en af in grootte wanneer objecten worden toegevoegd of verwijderd uit de lijst.
De ArrayList is niet gesynchroniseerd, dat betekent dat er meer dan één thread tegelijkertijd op de array kan 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 behulp van de klasse ArrayList:
ArrayList S1 = new ArrayList (); System.out.println ("Initiële grootte van S1:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.println ("Na toevoeging bevat S1:" + S1); System.out.println ("Grootte van S1 na toevoeging:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.println ("Na verwijdering bevat S1:" + S1); System.out.println ("Grootte van S1 na verwijdering:" + S1.size ()); // OutputInitial size van S1: 0 Na toevoeging bevat S1: [T, E, C, H]; Grootte van S1 na toevoeging: 4 Na verwijdering bevat S1: [E, H] Grootte van S1 na verwijdering: 2
In de bovenstaande code kun je dat zien; Ik heb een array met objecten van het stringtype gemaakt. Ik heb enkele objecten toegevoegd aan de array S1 met de methode add () en later sommige objecten verwijderd met de methode remove (). U kunt observeren als u niet de initiële grootte van de array opgeeft, maar van '0' lengte. Zoals u kunt zien, groeit en krimpt de array terwijl u de elementen toevoegt en verwijdert.
Definitie van Vector
Vector is een oude klasse die opnieuw wordt ontwikkeld om de verzamelingsklasse in de hiërarchie van het verzamelkader te ondersteunen. De vectorklasse wordt ook gedefinieerd in java.util- pakket, uitgebreid met de klasse AbstractList en geïmplementeerd door de lijstinterface. De Vector-klasse wordt als volgt verklaard:
klasse Vector
Hier definieert de E het type object dat in een array wordt opgeslagen. Een array gemaakt met de Vector-klasse heeft een variabele lengte. Het wordt dubbel zo groot als de verhoging niet is opgegeven. Laten we de creatie van array begrijpen met Vector.
Vector V = nieuwe Vector (1, 1); V.addElement ( "Tech"); V.addElement ( "afwijkingen"); System.out.println ("Capaciteit na 2 optelling:" + V.capaciteit ()); V.addElement ( "Between"); V.addElement ( "vectoren"); System.out.println ("Huidige capaciteit:" + V.capaciteit ()); // Uitvoercapaciteit na 2 optelling: 2 Huidige capaciteit: 4
In de bovenstaande code kun je dat zien. Ik noemde in het bijzonder de grootte en ophogingswaarde in de constructor van Vector respectievelijk, terwijl de reeks stringobjecten werd verklaard. Daarom kunt u zien dat als de limiet van array-afwerkingen wordt verhoogd, deze wordt verhoogd met de waarde die aan de constructor wordt verstrekt tijdens de declaratie.
Belangrijkste verschillen tussen ArrayList en vectoren
- Meerdere threads kunnen tegelijk op ArrayList werken, vandaar dat het als niet- gesynchroniseerd wordt beschouwd. In tegenstelling tot ArrayList kan slechts één thread tegelijk op een vector werken; vandaar heet het Gesynchroniseerd .
- 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 is een van de Legacy-klassen van Java. Later werden deze oudere klassen opnieuw ontwikkeld om de Collectieklasse te ondersteunen, terwijl de ArrayList-klasse een standaard Collection Class is.
- Wanneer de limiet van een array volledig wordt benut en een nieuw object wordt toegevoegd naast de uitgeputte array, wordt de grootte in beide gevallen groter, dwz zowel in ArrayList als in Vector, maar het verschil is dat in ArrayList, indien niet opgegeven, de grootte wordt verhoogd met 50% van de huidige array, terwijl in Vector-array de grootte verdubbeld wordt als de incrementwaarde niet is opgegeven.
- Vector maakt gebruik van zowel Enumeratie als Iterator om een array te doorkruisen, terwijl een ArrayList alleen iterator gebruikt voor het doorlopen van een array.
- Omdat ArrayList niet gesynchroniseerd is en veel threads tegelijkertijd kunnen werken, zijn de prestaties beter dan die van Vector waarop slechts één thread tegelijk kan werken.
overeenkomsten:
- ArrayList en Vector zijn beide gedefinieerd in java.util-pakket.
- ArrayList en Vector breiden beide de AbsractList-klasse uit.
- ArrayList en Vector beide instrumenten Lijst-interface.
- ArrayList en vectoren worden beide gebruikt om een dynamische array te maken die groeit wanneer dat nodig is.
- ArrayList en Vector bevatten beide objectreferenties.
Conclusie:
Ik besluit dat het gebruik van ArrayList beter is dan het gebruik van Vector omdat het sneller en beter presteert.