Skillnaden mellan ArrayList och Vector i Java

Författare: Laura McKinney
Skapelsedatum: 1 April 2021
Uppdatera Datum: 1 Maj 2024
Anonim
Intro till Vektorer
Video: Intro till Vektorer

Innehåll


ArrayList och Vector är båda klasserna under Collection Framework hierarchy. ArrayList och Vector, båda används för att skapa en dynamisk matris med objekt där matrisen kan växa i storlek efter behov. Det finns två grundläggande skillnader som skiljer ArrayList och Vector är att Vector tillhör Legacy klasser som senare reengineerered för att stödja samling klasser, medan en ArrayList är en standard samling klass. En annan viktig skillnad är att ArrayList å andra sidan är icke-synkroniserad; Vektor synkroniseras.

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

  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Likheter
  5. Slutsats

Jämförelsediagram

Grund för jämförelseArraylistVektor
GrundläggandeArrayList-klassen är inte synkroniserad.Vektorklassen är synkroniserad.
Legacy klassArrayList är en standardsamlingsklass.Vector är en arvsklass, omkonstruerad för att stödja samlingsklassen.
Klassdeklarationklass ArrayListklassvektor
omfördelningNär det inte anges ökas en ArrayList med halva storleken.När det inte anges ökas en vektor för att fördubbla storleken.
PrestandaEftersom ArrayList är osynkroniserad fungerar det snabbare än Vector.Eftersom Vector är synkroniserat fungerar det långsammare än ArrayList.
Räkning / IteratorArrayList använder Iterator-gränssnittet för att gå igenom objekt lagrade i ArrayList.Vektor använder uppräkning såväl som Iterator-gränssnitt för att gå igenom föremål lagrade i vektorer.


Definition av ArrayList

ArrayList tillhör listan med standardsamlingsklasser. Klassen ArrayList definieras inuti java.util paketet förlänger det AbstractList klass som också är en standardsamlingsklass, och den implementerar också Lista, ett gränssnitt definierat i samlingsgränssnitt. I Java är en standardmatris alltid av fast längd. Det betyder en gång skapad; det växer eller krymper inte dynamiskt i storlek. Så du bör ha förkunskaperna om längden på den matris du använder. Men ibland kan det hända att den erforderliga längden avslöjas vid körning så att hantera den här typen av situation java introducerade ArrayList.

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


klass ArrayList

Här anger E vilken typ av objekt som en matris kommer att innehålla. Den skapade matrisen har 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 synkroniserad vilket innebär att mer än en tråd kan fungera på matrisen samtidigt. Om till exempel en tråd lägger till en objektreferens till arrayen och en annan tråd tar bort en objektreferens från samma matris samtidigt. Skapa en dynamisk matris med ArrayList-klassen:

Arraylist S1 = ny ArrayList(); System.out.ln ("Initial storlek på S1:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.ln ("Efter tillägg S1 innehåller:" + S1); System.out.ln ("Storlek på S1 efter tillägg:" + S1.size ()); S1.remove ("T"); S1. avlägsna (2); System.out.ln ("Efter borttagning S1 innehåller:" + S1); System.out.ln ("Storlek på S1 efter borttagning:" + S1.size ()); // OutputInitial storlek på S1: 0 Efter tillsats innehåller S1:; Storlek på S1 efter tillsats: 4 Efter borttagning S1 innehåller: Storlek på S1 efter borttagning: 2

I ovanstående kod kan du se det; Jag skapade en rad objekt av strängtyp. Jag har lagt till några objekt i matrisen S1 med metoden add () och senare raderade några objekt med metoden remove (). Du kan observera om du inte anger den ursprungliga storleken på matrisen kommer den att vara av "0" längd. Som du ser kan arrayen växa och krympa i storlek när du lägger till och tar bort elementen.

Definition av vektor

Vector är en Legacy-klass som omarbetas för att stödja samlingsklassen i hierarkin för samlingsram. Vektorklassen definieras också i java.util paket, utökat med AbstractList klass och genomförs av Lista gränssnitt. Vektorklassen förklaras som följer:

klassvektor

Här definierar E vilken typ av objekt som ska lagras i en matris. En matris skapad med vektorklassen har variabel längd. Den ökar det dubbla storleken om ökningen inte anges. Låt oss förstå skapandet av array med hjälp av Vector.

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

I koden ovan kan du se att jag nämnde särskilt storleken och tilläggsvärdet i konstruktören av Vector respektive, medan jag förklarade matrisen av strängobjekt. Därför kan du observera att när gränsen för matchen slutar ökar den med det värde som tillhandahålls till konstruktören medan deklarationen.

  1. Flera trådar kan fungera på ArrayList på samma gång och därför beaktas det osynkroniserad. Till skillnad från ArrayList kan bara en enda tråd fungera på en vektor åt gången; därför kallas det synkroniserad.
  2. I en tidig version av Java skulle vissa klasser och gränssnitt tillhandahålla metoderna för att lagra objekt som de kallades Legacy-klasser Vector är en av Java-klassens Legacy. Senare omarbetades dessa arvsklasser för att stödja samlingsklass medan ArrayList-klassen är en standardsamlingsklass.
  3. När gränsen för en matris är fullt utnyttjad och ett nytt objekt läggs till bredvid den uttömda matrisen, växer dess storlek i både fallen, dvs i ArrayList och i Vector, men skillnaden är att i ArrayList, om inte anges storleken är ökad med 50% av den aktuella matrisen, medan i Vector-array fördubblas i storlek om inkrementvärdet inte anges.
  4. Vektor använder uppräkning såväl som Iterator för att korsa en matris medan en ArrayList bara använder iterator för att korsa en matris.
  5. Eftersom ArrayList är osynkroniserad och många trådar kan fungera på den samtidigt är dess prestanda bättre än Vector på vilken bara en tråd kan fungera åt gången.

Likheter:

  1. ArrayList och Vector definieras båda i java.util-paketet.
  2. ArrayList och Vector utökar båda AbsractList-klassen.
  3. ArrayList och Vector implementerar båda listgränssnittet.
  4. ArrayList och Vectors används båda för att skapa en dynamisk matris som växer efter behov.
  5. ArrayList och Vector har båda referenser till objekt.

Slutsats:

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