Erinevus JavaScripti ArrayListi ja vektori vahel

Autor: Laura McKinney
Loomise Kuupäev: 1 Aprill 2021
Värskenduse Kuupäev: 1 Mai 2024
Anonim
Leap Motion SDK
Videot: Leap Motion SDK

Sisu


ArrayList ja Vector on mõlemad klassid, mis kuuluvad kogumisraamistiku hierarhia alla. ArrayList ja Vector on mõlemad objektide dünaamilise massiivi loomiseks, kus massiivi suurus võib vajaduse korral kasvada. ArrayListit ja Vectorit eristavad kaks peamist erinevust: Vector kuulub Legacy klassidesse, mis hiljem kujundati ümber, et toetada kollektsiooniklasse, samas kui ArrayList on tavaline kollektsiooniklass. Teine oluline erinevus on see, et ArrayList pole seevastu sünkroonitud; Vektor on sünkroniseeritud.

Uurime allpool näidatud võrdlusdiagrammi abil mõnda muud erinevust.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Sarnasused
  5. Järeldus

Võrdlusdiagramm

Võrdluse alusArrayListVektor
PõhilineArrayListi klass pole sünkroonitud.Vektorklass on sünkroniseeritud.
PärandiklassArrayList on tavaline Collection'i klass.Vector on pärandklass, mis on ümber kujundatud, et toetada kollektsiooniklassi.
Klassideklaratsioonklass ArrayListklassi vektor
ÜmberjaotamineKui pole täpsustatud, suurendatakse ArrayList selle suurusest poole võrra.Kui seda pole täpsustatud, suurendatakse vektorit selle suuruse kahekordistamiseks.
EtendusKuna ArrayList pole sünkroniseeritud, töötab see kiiremini kui Vector.Kuna Vector on sünkroonitud, töötab see aeglasemalt kui ArrayList.
Loendamine / iteraatorArrayList kasutab Iteraatori liidest ArrayListi salvestatud objektide sirvimiseks.Vektor kasutab vektorites talletatud objektide sirvimiseks nii loendamist kui ka iteraatori liidest.


Määratlus ArrayList

ArrayList kuulub tavapäraste kollektsiooniklasside loendisse. Klass ArrayList on määratletud siseruumides java.util pakett, see laiendab AbstractList klass, mis on ühtlasi tavaline kollektsiooniklass ja mida ka rakendatakse Loend, kogumiliidestes määratletud liides. Java-keeles on tavaline massiiv alati kindla pikkusega. See tähendab kord loodud; see ei kasva dünaamiliselt ega kahane. Seega peaksid teil olema eelteadmised kasutatava massiivi pikkuse kohta. Kuid mõnikord võib juhtuda, et vajaminev pikkus kuvatakse käitustõmmise ajal, nii et jaavi tutvustas ArrayList sellist olukorda.

Massiivi nimekirja kasutatakse massiivi dünaamiliseks loomiseks, mis sisaldab viiteid objektidele. Selle massiivi suurus võib vajaduse korral kasvada. Klassideklaratsioon on järgmine:

klass ArrayList

Siin määrab E objektide tüübi, mida massiiv hoiab. Loodud massiiv on erineva pikkusega ning objektide lisamisel või loendist eemaldamisel selle suurus suureneb ja väheneb.


ArrayList pole sünkroonitud, mis tähendab, et massiivis saab korraga töötada rohkem kui üks teema. Näiteks kui üks lõim lisab massiivi objekti viite ja teine ​​niit eemaldab objekti massiivi viited samal massiivil. Dünaamilise massiivi loomine klassi ArrayList abil:

ArrayList S1 = uus ArrayList(); System.out.ln ("S1 algne suurus:" + S1.size ()); S1.add ("T"); S1.add ("C"); S1.add ("H"); S1.add (1, "E"); System.out.ln ("Pärast lisamist S1 sisaldab:" + S1); System.out.ln ("S1 suurus pärast lisamist:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.ln ("Pärast kustutamist S1 sisaldab:" + S1); System.out.ln ("S1 suurus pärast kustutamist:" + S1.size ()); // OutputS1 algsuurus: 0 Pärast lisamist sisaldab S1:; S1 suurus pärast lisamist: 4 Pärast kustutamist S1 sisaldab: S1 suurus pärast kustutamist: 2

Ülaltoodud koodis näete seda; Lõin massiivi stringi tüüpi objekte. Lisasin mõned objektid massiivi S1, kasutades meetodit add () ja hiljem kustutasin mõned objektid, kasutades meetodit remove (). Võite jälgida, kui te ei täpsusta massiivi algset suurust, selle pikkus oleks „0”. Nagu näete, elementide lisamisel ja kustutamisel massiiv kasvab ja kahaneb.

Vektori määratlus

Vector on pärandiklass, mis on ümber kujundatud, et toetada kollektsiooniklassi kogumisraamistiku hierarhias. Vektorklass on määratletud ka java.util pakett, laiendatud AbstractList klassi ja rakendas Loend liides. Vektoriklass kuulutatakse järgmiseks:

klassi vektor

Siin määratleb E massiivi salvestatava objekti tüübi. Klassi Vector abil loodud massiiv on erineva pikkusega. Kui juurdekasvu pole täpsustatud, suureneb see kahekordselt. Saame aru massiivi loomisest vektori abil.

Vektor V = uus vektor(1,1); V.addElement ("Tehnika"); V.addElement ("Erinevused"); System.out.ln ("Maht pärast 2 lisamist:" + V. maht ()); V.addElement ("Between"); V.addElement ("Vektorid"); System.out.ln ("Praegune maht:" + V. mahtuvus ()); // väljundvõimsus pärast 2 lisamist: 2 voolu maht: 4

Ülaltoodud koodis näete, et mainisin stringi objektide massiivi kuulutamisel eriti vektori konstruktoris vastavalt suuruse ja juurdekasvu väärtust. Seega võite täheldada, et massiivi limiidi lõppedes suureneb see väärtuse võrra, mis antakse konstruktorile deklareerimise ajal.

  1. ArrayList võiks korraga töötada mitu lõime, seega arvestatakse sellega sünkroniseerimata. Erinevalt ArrayListist võib vektoris korraga töötada ainult üks niit; seetõttu nimetatakse seda Sünkroniseeritud.
  2. Java varasemas versioonis pakuksid mõned klassid ja liidesed objektide talletamise meetodeid, mida neid nimetati pärandiklassideks. Vektor on üks Java pärandiklasside klassidest. Hiljem kujundati need pärandklassid ümber, et toetada kollektsiooni klassi, ArrayList klass on tavaline kollektsiooni klass.
  3. Kui massiivi limiit on täielikult ära kasutatud ja kurnatud massiivi kõrvale lisatakse uus objekt, kasvab selle suurus mõlemal juhul, st nii ArrayList kui ka Vector, kuid erinevus on see, et ArrayList, kui seda pole täpsustatud suurendatakse 50% praegusest massiivist, samas kui vektori massiivi suurus kahekordistub, kui juurdekasvu väärtust ei täpsustata.
  4. Vector kasutab massiivi liikumiseks nii loendamist kui ka iteraatorit, ArrayList kasutab iteraatorit ainult massiivi sirvimiseks.
  5. Kuna ArrayList on sünkroniseerimata ja paljud lõimed saavad sellel samal ajal töötada, on selle jõudlus parem kui Vektoril, kus korraga saab töötada ainult üks niit.

Sarnasused:

  1. ArrayList ja Vector on mõlemad määratletud paketis java.util.
  2. ArrayList ja Vector laiendavad mõlemad AbsractList klassi.
  3. Nii ArrayList kui ka Vector rakendavad loendi liidest.
  4. ArrayList ja vektoreid kasutatakse dünaamilise massiivi loomiseks, mis kasvab vastavalt vajadusele.
  5. ArrayList ja Vector hoiavad mõlemad objekti viiteid.

Järeldus:

Lõpetuseks ütlen, et ArrayListi kasutamine on parem kui vektori kasutamine, kuna see toimib kiiremini ja paremini.