Rekomenduojama, 2021

Redaktoriaus Pasirinkimas

Skirtumas tarp „ArrayList“ ir vektoriaus „Java“

„ArrayList“ ir „Vector“ abu yra klasių pagal kolekcijos pagrindų hierarchiją. „ArrayList“ ir „Vector“ abu naudojami sukurti dinaminį objektų masyvą, kuriame matrica gali augti pagal dydį, kai ir kada reikia. Yra du pagrindiniai skirtumai, kurie išskiria „ArrayList“ ir „Vector“ yra tai, kad „Vector“ priklauso „Legacy“ klasėms, kurios vėliau buvo sukonfigūruotos, kad palaikytų rinkimo klases, o „ArrayList“ yra standartinė kolekcijų klasė. Kitas svarbus skirtumas yra tas, kad „ArrayList“ yra ne sinchronizuotas; Vektorius sinchronizuojamas.

Išnagrinėkite kai kuriuos kitus skirtumus, pateikiamus žemiau pateiktoje palyginimo diagramoje.

Palyginimo diagrama

Palyginimo pagrindas„ArrayList“Vektorius
Pagrindinis„ArrayList“ klasė nėra sinchronizuota.Sinchronizuojama vektoriaus klasė.
Legacy klasė„ArrayList“ yra standartinė kolekcijos klasė.„Vector“ yra palikta klasė, sukonstruota taip, kad palaikytų rinkimo klasę.
Klasės deklaracijaklasės ArrayListklasės vektorius
PerskirstymasKai nenurodyta, „ArrayList“ padidinamas per pusę jo dydžio.Jei nenurodyta, vektorius padidinamas iki dvigubo dydžio.
SpektaklisKadangi „ArrayList“ yra sinchronizuotas, jis veikia greičiau nei „Vector“.Sinchronizavus „Vector“, jis veikia lėčiau nei „ArrayList“.
Surašymas / Iteratorius„ArrayList“ naudoja „Iterator“ sąsają „ArrayList“ saugomų objektų judėjimui.Vektoriuje naudojami vektoriai naudojamų objektų judėjimui naudoja Enumeration ir Iterator sąsajas.

„ArrayList“ apibrėžimas

„ArrayList“ priklauso standartinių rinkinių klasių sąrašui. Klasė „ArrayList“ yra apibrėžta „ java.util“ pakete, ji praplečia „ AbstractList“ klasę, kuri taip pat yra standartinė kolekcijos klasė, ir taip pat įgyvendina „ List“, sąsają, nustatytą „Collection Interfaces“. „Java“ standartinė matrica visada yra fiksuoto ilgio. Tai reiškia, kad kažkada sukurta; ji nėra dinamiškai auganti arba susitraukianti. Taigi, turėtumėte iš anksto žinoti apie naudojamo masyvo ilgį. Tačiau kartais gali atsitikti, kad reikalingas ilgis atskleidžiamas vykdymo metu, kad susidorotų su tokia situacija java pristatė „ArrayList“.

ArrayList yra klasė, naudojama dinaminiam masyvo kūrimui, kuriame yra nuorodos į objektus. Ši masyvas gali augti, kai ir kada reikia. Klasės deklaracija yra tokia:

 klasės ArrayList 

Čia E nurodo masyvo objektų tipą. Sukurtas masyvas yra kintamo ilgio, jis padidėja ir mažėja, kai objektai pridedami arba pašalinami iš sąrašo.

„ArrayList“ nėra sinchronizuojamas, tai reiškia, kad tuo pačiu metu masyvui gali veikti daugiau nei viena gija. Pavyzdžiui, jei vienas sriegis prideda objekto nuorodą į masyvą, o kitas sriegis tuo pačiu metu pašalina objekto nuorodą iš tos pačios masyvo. Dinamiško masyvo sukūrimas naudojant „ArrayList“ klasę:

 ArrayList S1 = naujas ArrayList (); System.out.println („Pradinis S1 dydis:“ + S1.size ()); S1.add ("T"); S1.add ("C"); S1.add ("H"); S1.add (1, "E"); System.out.println ("Po pridėjimo S1 yra:" + S1); System.out.println ("S1 dydis po pridėjimo:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.println ("Po ištrynimo S1 yra:" + S1); System.out.println ("S1 dydis po ištrynimo:" + S1.size ()); // S1 išvesties pradinis dydis: Po pridėjimo S1 yra: [T, E, C, H]; S1 dydis po pridėjimo: 4 Po ištrynimo S1 yra: [E, H] S1 dydis po ištrynimo: 2 

Minėtame kode galite matyti; Aš sukūriau eilutės tipo styginių. Aš pridėjau kai kuriuos objektus į masyvą S1, naudodami pridėjimo () metodą, o vėliau ištrinti kai kuriuos objektus, naudodami šalinimo () metodą. Galite pastebėti, jei nenurodote pradinio masyvo dydžio, kurio ilgis bus „0“. Kaip matote, masyvas auga ir mažėja, kai pridedate ir ištrinate elementus.

Vektoriaus apibrėžimas

„Vector“ yra palikta klasė, kuri yra pertvarkyta, kad būtų palaikoma kolekcijų klasės hierarchijos rinkinių klasė. Vektorių klasė taip pat apibrėžta java.util pakete, išplėsta „ AbstractList“ klasės ir įgyvendinama sąrašo sąsaja. „Vector“ klasė yra paskelbta taip:

 klasės vektorius 

Čia E apibrėžia objekto tipą, kuris bus saugomas masyve. Masyvas, sukurtas naudojant „Vector“ klasę, yra įvairaus ilgio. Jei padidinimas nenurodytas, jis padidėja dvigubai. Suprasime masyvo kūrimą naudojant „Vector“.

 Vektorius V = naujas Vektorius (1, 1); V.addElement („Tech“); V.addElement („Skirtumai“); System.out.println ("Talpa po 2 papildymo:" + V. talpa ()); V.addElement („Tarp“); V.addElement ("vektoriai"); System.out.println ("Dabartinė talpa:" + V. talpa () "; // Išėjimo talpa po 2 papildymo: 2 Srovės talpa: 4 

Anksčiau pateiktame kode galite pamatyti, kad aš ypač paminėjau vektoriaus konstruktoriaus dydį ir prieaugio vertę, tuo pačiu skelbdama eilutės objektų masyvą. Vadinasi, galite pastebėti, kad masyvo ribos ribose jis didėja pagal vertę, pateiktą konstruktoriui deklaracijos metu.

Pagrindiniai ArrayList ir vektorių skirtumai

  1. Tuo pačiu metu „ArrayList“ gali veikti keli siūlai, todėl jis laikomas nesinchronizuotu . Skirtingai nuo „ArrayList“, vienu metu vektoriuje gali veikti tik viena gija; todėl jis vadinamas sinchronizuotu .
  2. Ankstyvoje „Java“ versijoje kai kurios klasės ir sąsajos suteiktų metodus, kaip saugoti daiktus, kurie buvo vadinami palikimo klasėmis. Vektorius yra vienas iš „Legacy“ klasės „Java“. Vėliau šios palikimo klasės buvo pertvarkytos, kad palaikytų kolekcijos klasę, o „ArrayList“ klasė yra standartinė kolekcijų klasė.
  3. Kai masyvo riba yra visiškai panaudota, o šalia išeikvotos masyvo pridedamas naujas objektas, jo dydis auga abiem atvejais, pvz., „ArrayList“ ir „Vector“, bet skirtumas yra tas, kad „ArrayList“, jei nenurodytas dydis, yra padidinama 50% dabartinės masyvo, o „Vektorių masyvo“ dydis padvigubinamas, jei nenurodyta prieaugio vertė.
  4. Vektorius naudoja skaičiavimą, taip pat Iterator, kad būtų galima pereiti masyvą, tuo tarpu ArrayList naudoja tik iteratorių masyvui judėti.
  5. Kadangi „ArrayList“ yra „Unsynchronized“ ir daugelis temų gali veikti tuo pačiu metu, jo našumas yra geresnis nei „Vector“, kuriame vienu metu gali veikti tik viena gija.

Panašumai:

  1. „ArrayList“ ir „Vector“ abu yra apibrėžti „java.util“ pakete.
  2. ArrayList ir Vector abu pratęsia AbsractList klasę.
  3. „ArrayList“ ir „Vector“ abu įgyvendina „List“ sąsają.
  4. „ArrayList“ ir „vektoriai“ naudojami sukurti dinaminę masyvą, kuris auga pagal poreikį.
  5. ArrayList ir Vector abu turi objektų nuorodas.

Išvada:

Baigdamas sakau, kad „ArrayList“ naudojimas yra geresnis nei naudojant „Vector“, nes jis veikia greičiau ir geriau.

Top