Forskjellen mellom ArrayList og Vector i Java

Forfatter: Laura McKinney
Opprettelsesdato: 1 April 2021
Oppdater Dato: 1 Kan 2024
Anonim
What is difference between normal java and core java
Video: What is difference between normal java and core java

Innhold


ArrayList og Vector er begge klassene under Collection Framework hierarchy. ArrayList og Vector, begge brukes til å lage et dynamisk utvalg av objekter der matrisen kan vokse i størrelse etter behov. Det er to grunnleggende forskjeller som skiller ArrayList og Vector er at Vector tilhører Legacy-klasser som senere ble reengineerered for å støtte samlingsklassene, mens en ArrayList er en standard samlingsklasse. En annen viktig forskjell er at ArrayList derimot ikke er synkronisert; Vektor synkroniseres.

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

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. likheter
  5. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningArraylistVector
grunn~~POS=TRUNCArrayList-klassen er ikke synkronisert.Vektorklasse er synkronisert.
Legacy-klasseArrayList er en standard samlingsklasse.Vector er en arv klasse, re-konstruert for å støtte samling klassen.
Klassedeklarasjonklasse ArrayListklasse Vector
reallokeringNår det ikke er spesifisert, økes en ArrayList med halvparten av størrelsen.Når den ikke er spesifisert, økes en vektor for å doble størrelsen.
OpptredenSiden ArrayList ikke er synkronisert, fungerer den raskere enn Vector.Ettersom Vector er synkronisert, fungerer det tregere enn ArrayList.
Opplisting / IteratorArrayList bruker Iterator-grensesnittet til å krysse av objektene som er lagret i ArrayList.Vector bruker Enumeration så vel som Iterator-grensesnitt for å krysse av objektene som er lagret i vektorer.


Definisjon av ArrayList

ArrayList hører til listen over standard samlingsklasser. Klassen ArrayList er definert inne i java.util pakken, utvider den AbstractList klasse som også er en standard samlingsklasse, og den implementerer også Liste, et grensesnitt definert i samlingsgrensesnitt. I Java er en standardgruppe alltid av fast lengde. Det betyr en gang opprettet; den vokser eller krymper ikke dynamisk i størrelse. Så du bør ha forkunnskaper om lengden på matrisen du bruker. Noen ganger kan det hende at den nødvendige lengden avsløres ved kjøretid, for å håndtere denne typen situasjoner java introduserte ArrayList.

ArrayList er klassen som brukes til dynamisk oppretting av en matrise som inneholder referanser til objektene. Denne matrisen kan vokse i størrelse etter behov. Klassedeklarasjonen er som følger:

klasse ArrayList

Her spesifiserer E hvilken type objekter en matrise vil inneholde. Arrayen som er opprettet har variabel lengde, og den øker og synker i størrelse når objekter legges til eller fjernes fra listen.


ArrayList er ikke synkronisert, det betyr at mer enn en tråd kan operere på matrisen samtidig. Hvis for eksempel en tråd legger til en objektreferanse til matrisen og en annen tråd fjerner en objektreferanse fra den samme matrisen samtidig. Opprettelsen av en dynamisk matrise ved bruk av ArrayList-klassen:

Arraylist S1 = ny ArrayList(); System.out.ln ("Opprinnelig størrelse på S1:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.ln ("Etter tillegg inneholder S1:" + S1); System.out.ln ("Størrelse på S1 etter tilsetning:" + S1.size ()); S1.remove ("T"); S1. fjern (2); System.out.ln ("Etter sletting inneholder S1:" + S1); System.out.ln ("Størrelse på S1 etter sletting:" + S1.size ()); // OutputInitial størrelse på S1: 0 Etter tilsetning inneholder S1:; Størrelse på S1 etter tilsetning: 4 Etter sletting S1 inneholder: Størrelse på S1 etter sletting: 2

I koden over kan du se det; Jeg opprettet en rekke objekter av strengetype. Jeg la noen objekter til matrisen S1 ved å bruke add () -metoden, og senere slettet noen objekter ved å fjerne () metoden. Du kan se om du ikke spesifiserer den opprinnelige størrelsen på matrisen, den vil være av '0' lengde. Som du ser serien vokser og krympe i størrelse når du legger til og sletter elementene.

Definisjon av vektor

Vector er en Legacy-klasse som reengineereres for å støtte samlingsklassen i Collection Framework hierarchy. Vektorklassen er også definert i java.util pakke, utvidet med AbstractList klasse og implementert av Liste grensesnitt. Vector-klassen er erklært som følger:

klasse Vector

Her definerer E hvilken type objekt som skal lagres i en matrise. En matrise laget med vektorklasse har variabel lengde. Det øker det dobbelte av størrelsen hvis økningen ikke er spesifisert. La oss forstå etableringen av matriser ved hjelp av Vector.

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

I koden over kan du se at jeg nevnte spesielt størrelsen og økningsverdien i konstruktøren til Vector, mens jeg erklærte rekke strengobjekter. Derfor kan du observere at når grensen for matchen er ferdig, øker den med verdien som er levert til konstruktøren mens deklarasjonen.

  1. Flere tråder kan operere på ArrayList på samme tid, og det blir derfor vurdert usynkroniserte. I motsetning til ArrayList, er det bare en enkelt tråd som kan operere på en vektor om gangen; derav kalles det synkronisert.
  2. I en tidlig versjon av Java ville noen klasser og grensesnitt gi metodene for å lagre objekter de ble kalt Legacy klasser Vector er en av Legacy-klassen i Java. Senere ble disse arven klassene reengineerered for å støtte samling klasse, mens ArrayList klassen er en standard samling klasse.
  3. Når grensen for en matrise utnyttes fullt ut og et nytt objekt legges ved siden av den utmattede matrisen, vokser størrelsen i både tilfellene, dvs. i ArrayList så vel som i Vector, men forskjellen er at i ArrayList, hvis ikke spesifisert størrelsen blir økt med 50% av den aktuelle matrisen, mens i Vector array er doblet i størrelse hvis økningsverdien ikke er spesifisert.
  4. Vector bruker Enumeration så vel som Iterator for å krysse en matrise, mens en ArrayList bare bruker iterator for å krysse en matrise.
  5. Siden ArrayList er usynkronisert og mange tråder kan operere på den samtidig, er ytelsen bedre enn Vector der bare en tråd kan operere om gangen.

likheter:

  1. ArrayList og Vector er begge definert i java.util-pakken.
  2. ArrayList og Vector forlenger begge AbsractList-klassen.
  3. ArrayList og Vector implementerer begge listegrensesnittet.
  4. ArrayList og Vectors brukes begge til å lage en dynamisk matrise som vokser etter behov.
  5. ArrayList og Vector har begge objektreferanser.

Konklusjon:

Jeg konkluderer med å si at bruk av ArrayList er bedre enn å bruke Vector, da det presterer raskere og bedre.