Forskellen mellem ArrayList og Vector i Java

Forfatter: Laura McKinney
Oprettelsesdato: 1 April 2021
Opdateringsdato: 1 Kan 2024
Anonim
What is difference between normal java and core java
Video.: What is difference between normal java and core java

Indhold


ArrayList og Vector er begge klasserne under Collection Framework hierarchy. ArrayList og Vector bruges begge til at skabe en dynamisk række objekter, hvor matrixen kan vokse i størrelse, når og når det er nødvendigt. Der er to grundlæggende forskelle, der adskiller ArrayList og Vector er, at Vector hører til Legacy-klasser, der senere blev genudviklet for at understøtte samlingsklasserne, hvorimod en ArrayList er en standardindsamlingsklasse. En anden vigtig forskel er, at ArrayList på den anden side ikke er synkroniseret; Vektor synkroniseres.

Lad os studere nogle andre forskelle ved hjælp af sammenligningstabellen vist nedenfor.

  1. Sammenligningstabel
  2. Definition
  3. Vigtige forskelle
  4. ligheder
  5. Konklusion

Sammenligningstabel

Grundlag for sammenligningArrayListVector
GrundlæggendeArrayList-klassen er ikke synkroniseret.Vektorklasse synkroniseres.
Legacy klasseArrayList er en standard samlingsklasse.Vector er en arvsklasse, der er konstrueret til at understøtte samlingsklassen.
Klassedeklarationklasse ArrayListklasse Vector
omfordelingNår det ikke er angivet, øges en ArrayList med halvdelen af ​​dens størrelse.Når det ikke er angivet, øges en vektor for at fordoble dens størrelse.
YdeevneDa ArrayList ikke er synkroniseret, fungerer det hurtigere end Vector.Idet Vector er synkroniseret, fungerer det langsommere end ArrayList.
Enumeration / IteratorArrayList bruger Iterator-interface til at krydse objekter, der er gemt i ArrayList.Vector bruger optælling såvel som Iterator-interface til at krydse objekter, der er gemt i vektorer.


Definition af ArrayList

ArrayList hører til listen over standardindsamlingsklasser. Klassen ArrayList er defineret inde i java.util pakke, udvider den AbstractList klasse, som også er en standard indsamlingsklasse, og den implementerer også Liste, en grænseflade defineret i Collection Interfaces. I Java er en standardgruppe altid af fast længde. Det betyder, når den først er oprettet; det vokser ikke eller krymper i dynamisk størrelse. Så du skal have den forudgående viden om længden på den matrix, du bruger. Men nogle gange kan det ske, at den krævede længde afsløres ved kørsel, så for at håndtere denne form for situation introducerede java ArrayList.

ArrayList er klassen, der bruges til dynamisk oprettelse af en matrix, der indeholder referencerne til objekterne. Denne matrix kunne vokse i størrelse, når og når det er nødvendigt. Klassedeklarationen er som følger:


klasse ArrayList

Her specificerer E den type objekter, som en matrix vil indeholde. Den oprettede matrix har variabel længde, og den øges og formindskes i størrelse, når objekter tilføjes eller fjernes fra listen.

ArrayList er ikke synkroniseret, hvilket betyder, at mere end en tråd kan fungere på arrayet på samme tid. For eksempel, hvis en tråd tilføjer en objektreference til arrayen, og en anden tråd fjerner en objektreference fra den samme matrix på samme tid. Oprettelsen af ​​en dynamisk matrix ved hjælp af ArrayList-klassen:

ArrayList S1 = ny ArrayList(); System.out.ln ("Startstørrelse på S1:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.ln ("Efter tilføjelse S1 indeholder:" + S1); System.out.ln ("Størrelse på S1 efter tilføjelse:" + S1.size ()); S1. fjern ("T"); S1. fjern (2); System.out.ln ("Efter sletning indeholder S1:" + S1); System.out.ln ("Størrelse på S1 efter sletning:" + S1.size ()); // OutputInitial størrelse på S1: 0 Efter tilsætning indeholder S1:; Størrelse på S1 efter tilsætning: 4 Efter sletning S1 indeholder: Størrelse på S1 efter sletning: 2

I ovenstående kode kan du se det; Jeg oprettede en række objekter af strengetype. Jeg føjede nogle objekter til matrixen S1 ved hjælp af add () -metoden, og senere slettede nogle objekter ved hjælp af remove () -metoden. Du kan observere, hvis du ikke angiver den oprindelige størrelse på matrixen, den vil være af '0' længde. Som du kan se, arrayet vokser og krymper i størrelse, når du tilføjer og sletter elementerne.

Definition af vektor

Vector er en Legacy-klasse, der genudvikles for at understøtte samlingsklassen i hierarkiet med samlingsrammer. Vektorklassen er også defineret i java.util pakke, udvidet med AbstractList klasse og implementeret af Liste grænseflade. Vector-klassen er erklæret som følger:

klasse Vector

Her definerer E typen af ​​objekt, der skal gemmes i en matrix. En matrix oprettet ved hjælp af Vector-klassen er af variabel længde. Det øger det dobbelte af størrelsen, hvis tildelingen ikke er specificeret. Lad os forstå oprettelsen af ​​matrix ved hjælp af Vector.

Vector V = ny vektor(1,1); V.addElement ( "Tech"); V.addElement ( "Forskelle"); System.out.ln ("Kapacitet efter 2 tilføjelse:" + V.kapacitet ()); V.addElement ( "Mellem"); V.addElement ( "Vektorer"); System.out.ln ("Nuværende kapacitet:" + V.kapacitet ()); // Outputkapacitet efter 2 tilføjelse: 2 Nuværende kapacitet: 4

I ovenstående kode kan du se, at jeg især nævnte størrelsen og forøgelsesværdien i henholdsvis konstruktøren af ​​Vector, mens jeg erklærede matrixen af ​​strengobjekter. Derfor kan du konstatere, at når grænsen for array afsluttes, øges den med den værdi, der er leveret til konstruktøren, mens deklarationen.

  1. Flere tråde kunne fungere på ArrayList på samme tid, og det betragtes derfor usynkroniseret. I modsætning til ArrayList kan kun en enkelt tråd fungere på en vektor ad gangen; derfor kaldes det synkroniseret.
  2. I en tidlig version af Java ville nogle klasser og grænseflader give metoderne til at gemme objekter, de blev kaldt Legacy-klasser Vector, er en af ​​Legacy-klassen i Java. Senere blev disse arveklasser genudarbejdet for at støtte samlingsklasse, hvorimod ArrayList-klassen er en standardsamlingsklasse.
  3. Når grænsen for en matrix udnyttes fuldt ud, og der tilføjes et nyt objekt ved siden af ​​det udmattede array, vokser dets størrelse i både tilfældene, dvs. i ArrayList såvel som i Vector, men forskellen er den i ArrayList, hvis ikke angivet størrelse er forøget med 50% af den aktuelle array, hvorimod i Vector array fordobles i størrelse, hvis forøgelsesværdien ikke er specificeret.
  4. Vector bruger optælling såvel som Iterator til at krydse en matrix, mens en ArrayList kun bruger iterator til at krydse en matrix.
  5. Da ArrayList er usynkroniseret, og mange tråde kan operere på det på samme tid, er dens ydeevne bedre end Vector, hvor kun en tråd kan fungere ad gangen.

ligheder:

  1. ArrayList og Vector er begge defineret i java.util-pakken.
  2. ArrayList og Vector udvider begge AbsractList-klassen.
  3. ArrayList og Vector implementerer begge Listeflade.
  4. ArrayList og Vectors bruges begge til at skabe en dynamisk matrix, der vokser efter behov.
  5. ArrayList og Vector har begge objektreferencer.

Konklusion:

Jeg konkluderer med at sige, at brug af ArrayList er bedre end at bruge Vector, da det fungerer hurtigere og bedre.