Anbefalt, 2024

Redaksjonens

Forskjellen mellom ArrayList og Vector i Java

ArrayList og Vector begge er klassene under Collection Framework hierarkiet. ArrayList og Vector, begge brukes til å lage et dynamisk utvalg av objekter der arrayet kan vokse i størrelse etter behov. Det er to grunnforskjeller som skiller ArrayList og Vector er at Vector tilhører Legacy klasser som senere ble reengineered for å støtte samlingsklassene, mens en ArrayList er en standard samlingsklasse. En annen viktig forskjell er at ArrayList er ikke-synkronisert på den annen side; Vector er synkronisert.

La oss studere noen andre forskjeller ved hjelp av sammenligningstabellen som er vist nedenfor.

Sammenligningstabel

Grunnlag for sammenligningArraylistVector
grunn~~POS=TRUNCArrayList-klassen er ikke synkronisert.Vector klassen er synkronisert.
Eldre klasseArrayList er en standard samlingsklasse.Vector er en eldre klasse, re-engineered for å støtte kolleksjonsklassen.
Klasseerklæringklasse ArrayListklasse Vector
reallokeringNår ikke spesifisert, økes ArrayList med halvparten av størrelsen.Når ikke spesifisert, økes en vektor for å doble størrelsen.
OpptredenSom ArrayList er usynkronisert, fungerer den raskere enn Vector.Som Vector er synkronisert, opererer den langsommere enn ArrayList.
Opplisting / IteratorArrayList bruker Iterator-grensesnittet til å krysse objekter som er lagret i ArrayList.Vector bruker Oppsummering samt Iterator-grensesnitt for å krysse objekter som er lagret i vektorer.

Definisjon av ArrayList

ArrayList tilhører listen over standard samlingsklasser. Klassen ArrayList er definert i java.util- pakken, den utvider klassen AbstractList, som også er en standard kolleksjonsklasse, og implementerer også List, et grensesnitt som er definert i Collection Interfaces. I Java er et standardoppsett alltid av fast lengde. Det betyr at en gang opprettet; det vokser ikke dynamisk eller krympes i størrelse. Så, bør du ha forkunnskap om lengden på arrayet du bruker. Men noen ganger kan det hende at den nødvendige lengden blir avslørt på kjøretid, så for å håndtere denne typen situasjon innførte java ArrayList.

ArrayListen er klassen som brukes til dynamisk opprettelse av en matrise som inneholder referansene til objektene. Denne gruppen kan vokse i størrelse etter hvert som det kreves. Klassedeklarasjonen er som følger:

 klasse ArrayList 

Her spesifiserer E typen objekter som en matrise vil holde. Oppsettet er av variabel lengde, og det øker og avtar i størrelse når objekter blir lagt til eller fjernet fra listen.

ArrayListen er ikke synkronisert, det betyr at flere enn én tråd kan operere på arrayet samtidig. For eksempel, hvis en tråd er å legge til en objektreferanse til arrayet og en annen tråd, fjerner en objektreferanse fra samme array samtidig. Opprettelsen av et dynamisk array ved hjelp av ArrayList-klassen:

 ArrayList S1 = ny ArrayList (); System.out.println ("Startstørrelse S1:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.println ("Etter tillegg S1 inneholder:" + S1); System.out.println ("Størrelse på S1 etter tillegg:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.println ("Etter sletting S1 inneholder:" + S1); System.out.println ("Størrelse på S1 etter sletting:" + S1.size ()); // UtgangInitial størrelse på S1: 0 Etter tillegg inneholder S1: [T, E, C, H]; Størrelse på S1 etter tillegg: 4 Etter sletting inneholder S1: [E, H] Størrelse på S1 etter sletting: 2 

I ovennevnte kode kan du se det; Jeg opprettet en rekke objekter av strengtype. Jeg la til noen objekter i array S1 ved hjelp av add () -metoden, og senere slettet noen objekter ved hjelp av remove () -metoden. Du kan observere hvis du ikke angir den opprinnelige størrelsen på arrayet, vil den være av '0' lengde. Som du ser, vokser arrayet og krympes i størrelse når du legger til og sletter elementene.

Definisjon av Vector

Vector er en eldre klasse som er reengineered for å støtte samlingen klassen i samling rammehierarki. Vektorklassen er også definert i java.util- pakken, utvidet av AbstractList- klassen og implementert av List- grensesnittet. Vector-klassen er erklært som følger:

 klasse Vector 

Her definerer E hvilken type objekt som skal lagres i en matrise. Et array opprettet ved hjelp av Vector-klassen er av variabel lengde. Det øker doblet sin størrelse hvis trinnet ikke er angitt. La oss forstå opprettelsen av array ved hjelp av Vector.

 Vector V = ny vektor (1, 1); V.addElement ( "Tech"); V.addElement ( "forskjeller"); System.out.println ("Kapasitet etter 2 tillegg:" + V.capacity ()); V.addElement ( "Mellom"); V.addElement ( "Vektorer"); System.out.println ("Nåværende kapasitet:" + V.capacity ()); // Utgangskapasitet etter 2 tillegg: 2 Strømkapasitet: 4 

I overkoden kan du se det, jeg nevnte spesielt størrelsen og stigningsverdien i konstruktøren til Vector henholdsvis, mens jeg erklærte en rekke strengobjekter. Derfor kan du observere at når grensen for array er ferdig, øker den med verdien som er gitt til konstruktøren under erklæringen.

Viktige forskjeller mellom ArrayList og vektorer

  1. Flere tråder kan operere på ArrayList samtidig, og det anses derfor for usynkronisert . I motsetning til ArrayList kan bare en enkelt tråd operere på en vektor om gangen; dermed kalles det synkronisert .
  2. I en tidlig versjon av Java, ville noen klasser og grensesnitt gi metodene til å lagre objekter de ble kalt Eldre klasser Vector er en blant Legacy klassen av Java. Senere ble disse eldre klassene reengineert for å støtte samlingsklassen, mens ArrayList-klassen er en standard samlingsklasse.
  3. Når grensen for en matrise er fullt utnyttet og en ny gjenstand legges ved siden av det utmattede matrisen, vokser størrelsen i begge tilfellene, dvs. i ArrayList, så vel som i Vector, men forskjellen er at i ArrayList, hvis ikke spesifisert størrelsen økes med 50% av gjeldende rekkefølge mens i Vector-arrayet dobles i størrelse dersom stigningsverdien ikke er spesifisert.
  4. Vector bruker Oppsummering samt Iterator å krysse en matrise, mens en ArrayList bruker bare iterator for å krysse en matrise.
  5. Siden ArrayList er usynkronisert og mange tråder kan operere på det, er ytelsen dessverre bedre enn Vector som bare en tråd kan operere av gangen.

likheter:

  1. ArrayList og Vector begge er definert i java.util-pakken.
  2. ArrayList og Vector både utvide AbsractList-klassen.
  3. ArrayList og Vector både implementerer Liste grensesnitt.
  4. ArrayList og vektorer begge brukes til å lage et dynamisk array som vokser etter behov.
  5. ArrayList og Vector inneholder begge objektreferanser.

Konklusjon:

Jeg konkluderer med at bruk av ArrayList er bedre enn å bruke Vector som den utfører raskere og bedre.

Top