Razlika med ArrayList in Vector v Javi

Avtor: Laura McKinney
Datum Ustvarjanja: 1 April 2021
Datum Posodobitve: 1 Maj 2024
Anonim
Razlika med ArrayList in Vector v Javi - Tehnologija
Razlika med ArrayList in Vector v Javi - Tehnologija

Vsebina


ArrayList in Vector sta razreda v hierarhiji Collection Framework. ArrayList in Vector se uporabljata za ustvarjanje dinamičnega niza predmetov, kjer lahko matrika narašča v velikosti, kadar in kadar je to potrebno. ArrayList in Vector določata dve osnovni razliki, da Vector spada v starejše razrede, ki so jih pozneje prenovili v podporo kolekcijskim razredom, medtem ko je ArrayList standardni zbirki. Druga pomembna razlika je, da ArrayList na drugi strani ni sinhroniziran; Vektor je sinhroniziran.

Preučimo še nekaj razlik s pomočjo spodnje tabele primerjave.

  1. Primerjalna tabela
  2. Opredelitev
  3. Ključne razlike
  4. Podobnosti
  5. Zaključek

Primerjalna tabela

Osnove za primerjavoArrayListVektor
OsnovniRazred ArrayList ni Sinhroniziran.Vektorski razred je sinhroniziran.
Legacy classArrayList je standardni kolekcijski razred.Vector je zapuščina, ki je bila preoblikovana v podporo kolekcijskemu razredu.
Deklaracija razredarazred ArrayListrazred Vektor
PrerazporeditevČe ni določeno, se ArrayList poveča za polovico njegove velikosti.Če ni določeno, se vektor poveča za podvojitev njegove velikosti.
IzvedbaKer je ArrayList nesinhroniziran, deluje hitreje kot Vector.Ko je Vector sinhroniziran, deluje počasneje kot ArrayList.
Poštevanje / IteratorArrayList uporablja vmesnik Iterator za premikanje predmetov, shranjenih v ArrayList.Vektor uporablja naštevanje in vmesnik Iterator za premikanje predmetov, shranjenih v Vektorjih.


Opredelitev ArrayList

ArrayList spada na seznam standardnih zbirk. Razred ArrayList je opredeljen znotraj java.util paket, podaljša Izvleček razreda, ki je tudi standardni zbirni razred in ga tudi izvajajo Seznam, vmesnik, opredeljen v zbirkah vmesnikov. Pri Javi je standardni niz vedno fiksne dolžine. To pomeni, da je enkrat ustvarjeno; dinamično ne raste in se ne zmanjša. Tako bi morali imeti predhodno znanje o dolžini matrike, ki jo uporabljate. Toda včasih se lahko zgodi, da se zahtevana dolžina razkrije med izvajanjem, zato je za obvladovanje tovrstnih situacij java uvedla ArrayList.

ArrayList je razred, ki se uporablja za dinamično ustvarjanje matrike, ki vsebuje reference na predmete. Ta niz se lahko poveča in po potrebi poveča. Deklaracija razreda je naslednja:

razred ArrayList

Tukaj E določa vrsto predmetov, ki jih bo shranila matrika. Ustvarjena matrika je spremenljive dolžine in se povečuje in zmanjšuje, ko se predmeti dodajo ali odstranijo s seznama.


ArrayList ni sinhroniziran, kar pomeni, da lahko na matriki hkrati deluje več kot ena nit. Na primer, če ena nit doda matrično referenco predmeta, druga nit pa hkrati odstrani referenco predmeta iz istega polja. Ustvarjanje dinamičnega niza z razredom ArrayList:

ArrayList S1 = nov ArrayList(); System.out.ln ("Začetna velikost S1:" + velikost velikosti ()); S1.add ("T"); S1.add ("C"); S1.add ("H"); S1.add (1, "E"); System.out.ln ("Po dodatku S1 vsebuje:" + S1); System.out.ln ("Velikost S1 po dodatku:" + velikost S1. ()); S1.remove ("T"); S1.remove (2); System.out.ln ("Po brisanju S1 vsebuje:" + S1); System.out.ln ("Velikost S1 po brisanju:" + velikost S1. ()); // Izhodna začetna velikost S1: 0 Po dodajanju S1 vsebuje:; Velikost S1 po dodatku: 4 Po brisanju S1 vsebuje: Velikost S1 po brisanju: 2

V zgornji kodi lahko to vidite; Ustvaril sem niz predmetov vrste niza. V matriko S1 sem dodal nekaj predmetov z uporabo metode dodajanja (), pozneje pa nekatere predmete izbrisal z uporabo metode odstranitve (). Če ne določite začetne velikosti matrike, lahko opazite, da bo dolžina '0'. Kot lahko vidite, kako matrika narašča in se zmanjšuje, ko dodajate in brišete elemente.

Opredelitev vektorja

Vector je razred Legacy, ki je prenovljen za podporo kolekcijskega razreda v hierarhiji Collection Framework. Vektorski razred je določen tudi v java.util paket, podaljšan za Izvleček razreda in jo izvaja Seznam vmesnik. Razred Vector je razglašen na naslednji način:

razred Vektor

Tukaj E določa vrsto predmeta, ki bo shranjen v matriki. Niz, ustvarjen z uporabo razreda Vector, je spremenljive dolžine. Dvojna velikost se poveča, če prirast ni določen. Razumejmo ustvarjanje matrike z uporabo Vektorja.

Vektor V = nov vektor(1,1); V.addElement ("Tech"); V.addElement ("Razlike"); System.out.ln ("Zmogljivost po 2 dodatku:" + V.kapaciteta ()); V.addElement ("Med"); V.addElement ("Vektorji"); System.out.ln ("Trenutna zmogljivost:" + V.kapaciteta ()); // Izhodna zmogljivost po 2 dodatku: 2 Trenutna točnost: 4

V zgornji kodi lahko vidite, da sem še posebej omenil vrednost velikosti in prirasta v konstruktorju Vector, medtem ko sem izjavljal niz strukturnih predmetov. Tako lahko opazite, da ko se omejitev matrike konča, se povečuje za vrednost, ki je bila podana konstruktorju med deklaracijo.

  1. Na ArrayListu lahko hkrati deluje več niti, od koder se upošteva nesinhronizirano. Za razliko od ArrayList, na vektor lahko hkrati deluje samo posamezna nit; od tod tudi imenovan Sinhronizirano.
  2. V zgodnji različici Jave bi nekateri razredi in vmesniki zagotavljali metode za shranjevanje predmetov, ki so jih poimenovali Legacy class Vector. Kasneje so te zapuščene razrede prenovili v podporo zbirki, medtem ko je razred ArrayList standardni zbirka.
  3. Ko je omejitev matrike v celoti izkoriščena in zraven izčrpanega niza doda nov objekt, njegova velikost raste tako v primerih, tako v ArrayList kot v Vector, vendar je razlika v tem, da v ArrayList, če ni določena velikost, se poveča za 50% trenutnega niza, medtem ko se v Vektorski matriki podvoji v velikosti, če vrednost prirastka ni določena.
  4. Vector uporablja za prečkanje matrike Enumeration in Iterator, medtem ko ArrayList uporablja iterator samo za premikanje matrike.
  5. Ker je ArrayList nesinhroniziran in na njem lahko deluje več niti hkrati, je njegova uspešnost boljša od vektorja, na katerem lahko hkrati deluje samo ena nit.

Podobnosti:

  1. ArrayList in Vector sta definirana v paketu java.util.
  2. ArrayList in Vector razširita razred AbsractList.
  3. ArrayList in Vector izvajata vmesnik List.
  4. ArrayList in Vectors se uporabljata za ustvarjanje dinamičnega niza, ki raste, kot je potrebno.
  5. ArrayList in Vector vsebujeta reference referenc.

Zaključek:

Zaključim s tem, da je uporaba ArrayList boljša od uporabe Vektorja, saj deluje hitreje in bolje.