Rekommenderas, 2024

Redaktionen

Skillnad mellan ArrayList och Vector i Java

ArrayList och Vector båda är klasserna under Collection Framework hierarchy. ArrayList och Vector, båda används för att skapa en dynamisk grupp av objekt där arrayen kan växa i storlek vid behov. Det finns två grundläggande skillnader som skiljer ArrayList och Vector är att Vector tillhör Legacy klasser som senare reengineered för att stödja samlingsklasserna, medan en ArrayList är en standard samlingsklass. En annan viktig skillnad är att ArrayList är osynkroniserad å andra sidan; Vector är synkroniserad.

Låt oss studera några andra skillnader med hjälp av jämförelsetabellen som visas nedan.

Jämförelsediagram

Grunder för jämförelseArraylistVektor
GrundläggandeArrayList-klassen är inte synkroniserad.Vektor klassen är synkroniserad.
Äldre klassArrayList är en standard samlingsklass.Vector är en äldre klass, omarbetad för att stödja insamlingsklassen.
Klassdeklarationklass ArrayListklass Vector
omfördelningNär inte specificeras ökas en ArrayList med hälften av dess storlek.När det inte anges, ökas en vektor för att dubbla storleken.
PrestandaEftersom ArrayList är osynkroniserad fungerar den snabbare än Vector.Eftersom Vector synkroniseras, fungerar den långsammare än ArrayList.
Räkning / IteratorArrayList använder Iterator-gränssnittet för att korsa objekten som är lagrade i ArrayList.Vector använder uppräkning samt Iterator-gränssnitt för att korsa objekten som är lagrade i vektorer.

Definition av ArrayList

ArrayList tillhör listan över standardkollektioner. Klass ArrayList definieras inuti java.util- paketet, det utökar klassen AbstractList som också är en standardkollektionsklass och implementerar även List, ett gränssnitt som definieras i Samlingsgränssnitt. I Java är en standardmatris alltid av fast längd. Det betyder en gång skapad; det växer inte dynamiskt eller krymper i storlek. Så du borde ha förkunskap om längden på den matris du använder. Men ibland kan det hända att den önskade längden avslöjas vid körning så att hantera denna typ av situation introducerar Java ArrayList.

ArrayList är klass som används för dynamisk skapande av en array som innehåller referenser till objekten. Denna matris kan växa i storlek vid behov. Klassdeklarationen är som följer:

 klass ArrayList 

Här specificerar E vilken typ av objekt som en array ska hålla. Den skapade gruppen är av variabel längd, och den ökar och minskar i storlek när objekt läggs till eller tas bort från listan.

ArrayList är inte synkroniserat, det betyder att mer än en tråd kan fungera på arrayen samtidigt. Om exempelvis en tråd lägger till en objektreferens till arrayen och en annan tråd tar bort en objektreferens från samma array samtidigt. Skapandet av en dynamisk array med ArrayList-klassen:

 ArrayList S1 = ny ArrayList (); System.out.println ("Initial storlek S1:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.println ("Efter tillägg S1 innehåller:" + S1); System.out.println ("S1-storlek efter tillägg:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.println ("Efter borttagning S1 innehåller:" + S1); System.out.println ("S1-storlek efter radering:" + S1.size ()); // OutputInitial storlek S1: 0 Efter tillsats innehåller S1: [T, E, C, H]; S1-storlek efter tillägg: 4 Efter radering innehåller S1: [E, H] S1-storlek efter radering: 2 

I ovanstående kod kan du se det; Jag skapade en rad objekt av strängtyp. Jag lade till några objekt i array S1 med add () -metoden, och senare raderade vissa objekt med hjälp av remove () -metoden. Du kan observera om du inte anger den ursprungliga storleken på arrayen kommer den att vara av '0' längd. Som du kan se växer arrayen och krymper i storlek när du lägger till och tar bort elementen.

Definition av vektor

Vector är en äldre klass som är reengineered för att stödja samlingsklassen i samlingsramarhierarkin. Vektorklassen definieras också i java.util- paketet, utökat av AbstractList- klassen och implementeras av listgränssnittet. Vector-klassen förklaras som följer:

 klass Vector 

Här definierar E vilken typ av objekt som ska lagras i en array. En grupp som skapats med hjälp av Vector-klassen är av variabel längd. Den ökar dubbelt så stor om inkrementet inte anges. Låt oss förstå skapandet av array med Vector.

 Vektor V = Ny vektor (1, 1); V.addElement ( "Tech"); V.addElement ( "Skillnader"); System.out.println ("Kapacitet efter 2 tillägg:" + V.capacity ()); V.addElement ( "Mellan"); V.addElement ( "Vektorer"); System.out.println ("Aktuell kapacitet:" + V.capacity ()); // Utgångskapacitet efter 2 tillägg: 2 Nuvarande kapacitet: 4 

I ovanstående kod kan du se att jag nämnde särskilt storleken och inkrementvärdet i konstruktören för Vector, samtidigt som jag förklarar arrayen av strängobjekt. Därför kan du observera att det som gränsen för array-finishen ökar med det värde som tillhandahålls till konstruktören under deklarationen.

Viktiga skillnader mellan ArrayList och vektorer

  1. Flera trådar kan fungera på ArrayList samtidigt och anses därför vara osynkroniserad . Till skillnad från ArrayList kan endast en enda tråd fungera på en vektor i taget. Därför kallas det Synkroniserat .
  2. I en tidig version av Java skulle vissa klasser och gränssnitt ge metoderna att lagra objekt som de kallades Äldre klasser Vector är en bland klassen Legacy i Java. Senare blev dessa äldre klasser reengineered för att stödja Samlingsklass medan ArrayList-klassen är en standard Samlingsklass.
  3. När gränsen för en array är fullt utnyttjad och ett nytt objekt läggs bredvid den uttömda matrisen växer dess storlek i båda fallen, dvs i ArrayList såväl som i Vector men skillnaden är det i ArrayList, om inte specificerat storleken ökar med 50% av den aktuella matrisen medan i vektormatrisen fördubblas i storlek om inkrementvärdet inte anges.
  4. Vector använder uppräkning samt Iterator för att korsa en array medan en ArrayList endast använder iterator för att kryssa en array.
  5. Eftersom ArrayList är osynkroniserad och många trådar kan fungera samtidigt är dess prestanda bättre än Vector där endast en tråd kan fungera åt gången.

Likheter:

  1. ArrayList och Vector båda definieras i java.util-paketet.
  2. ArrayList och Vector båda utsträcker AbsractList-klassen.
  3. ArrayList och Vector båda implementerar Lista gränssnitt.
  4. ArrayList och Vectors båda används för att skapa en dynamisk array som växer efter behov.
  5. ArrayList och Vector innehåller båda objektreferenser.

Slutsats:

Jag avslutar med att säga att användningen av ArrayList är bättre än att använda Vector eftersom den fungerar snabbare och bättre.

Top