Skirtumas tarp ArrayList ir Vektorius Java
Turinys
„ArrayList“ ir „Vector“ yra klasės pagal kolekcijų sąrangos hierarchiją. „ArrayList“ ir „Vector“ yra naudojami kuriant dinamišką objektų masyvą, kuriame masyvo dydis gali išaugti prireikus. Yra du pagrindiniai skirtumai, išskiriantys „ArrayList“ ir „Vector“: „Vektorius“ priklauso „Legacy“ klasėms, kurios vėliau buvo perprojektuotos palaikyti kolekcijos klases, o „ArrayList“ yra standartinė kolekcijos klasė. Kitas svarbus skirtumas yra tas, kad, kita vertus, „ArrayList“ nėra sinchronizuotas; Vektorius sinchronizuotas.
Leiskite mums išnagrinėti kai kuriuos kitus skirtumus, naudodamiesi palyginimo lentele, parodyta žemiau.
- Palyginimo diagrama
- Apibrėžimas
- Pagrindiniai skirtumai
- Panašumai
- Išvada
Palyginimo diagrama
Palyginimo pagrindas | „ArrayList“ | Vektorius |
---|---|---|
Pagrindinis | „ArrayList“ klasė nėra sinchronizuota. | Vektorių klasė yra sinchronizuota. |
Palikimo klasė | „ArrayList“ yra standartinė kolekcijos klasė. | „Vector“ yra sena klasė, perprojektuota palaikyti kolekcijos klasę. |
Klasės deklaracija | klasės „ArrayList“ | klasės vektorius |
Perskirstymas | Kai nenurodyta, „ArrayList“ padidinamas perpus. | Kai nenurodyta, vektorius padidinamas, kad jo dydis padidėtų dvigubai. |
Spektaklis | Kadangi „ArrayList“ nėra sinchronizuotas, jis veikia greičiau nei „Vector“. | Kadangi „Vector“ sinchronizuojamas, jis veikia lėčiau nei „ArrayList“. |
Surašymas / Iteratorius | „ArrayList“ naudoja „Iterator“ sąsają, kad aplankytų „ArrayList“ saugomus objektus. | „Vektoriai“ naudoja „Enumeration“ ir „Iterator“ sąsają, kad aplankytų „Vektoriuose“ saugomus objektus. |
Apibrėžimas ArrayList
„ArrayList“ priklauso standartinių kolekcijos klasių sąrašui. „ArrayList“ klasė yra apibrėžta java.util paketą, jis išplečia „AbstractList“ klasė, kuri taip pat yra standartinė kolekcijos klasė, ir ją taip pat įgyvendina Sąrašas, sąsaja, apibrėžta kolekcijos sąsajose. „Java“ programoje standartinis masyvas visada yra fiksuoto ilgio. Tai reiškia, kad vieną kartą sukurta; jis dinamiškai neauga ir nesitraukia. Taigi, jūs turėtumėte iš anksto žinoti apie naudojamo masyvo ilgį. Bet kartais gali atsitikti taip, kad reikalingas ilgis bus atskleistas vykdant laiką, kad būtų galima išspręsti tokią situaciją, „Java“ pristatė „ArrayList“.
„ArrayList“ yra klasė, naudojama dinaminiam masyvo, kuriame yra nuorodos į objektus, sukūrimui. Šis masyvas gali išaugti, kai to prireiks. Klasės deklaracija yra tokia:
klasės „ArrayList“ Čia E nurodo objektų, kuriuos laikys masyvas, tipą. Sukurtas masyvas yra įvairaus ilgio, o pridedant ar išbraukiant iš sąrašo objektų dydis padidėja ir mažėja. „ArrayList“ nėra sinchronizuotas, tai reiškia, kad masyve vienu metu gali veikti daugiau nei viena gija. Pvz., Jei viena gija prideda objekto nuorodą į masyvą, o kita gija tuo pačiu metu pašalina objekto nuorodą iš to paties masyvo. Dinaminio masyvo sukūrimas naudojant „ArrayList“ klasę: „ArrayList“ Aukščiau pateiktame kode galite tai pamatyti; Sukūriau eilutės tipo objektų masyvą. Kai kuriuos objektus į masyvą S1 pridėjau naudodamas „add ()“ metodą, vėliau kai kuriuos objektus ištryniau naudodamas „pašalinti ()“ metodą. Galite pastebėti, jei nenurodysite pradinio masyvo dydžio, jo ilgis bus „0“. Kaip matote, masyvas auga ir mažėja, nes pridedate ir ištrinate elementus. „Vector“ yra „Legacy“ klasė, kuri yra pertvarkyta taip, kad palaikytų kolekcijos klasę „Collection Framework“ hierarchijoje. Vektorių klasė taip pat apibrėžta java.util paketas, pratęstas „AbstractList“ klasė ir įgyvendinta Sąrašas sąsaja. Vektorių klasė skelbiama taip: klasės vektorius Čia E nurodo objekto, kuris bus saugomas masyve, tipą. Naudojant „Vector“ klasę sukurtas masyvas yra įvairaus ilgio. Jei padidinimas nenurodytas, jis padidėja dvigubai. Supraskime masyvo kūrimą naudojant „Vector“. Vektorius Aukščiau esančiame kode galite pastebėti, kad aš ypač paminėjau dydžio ir prieaugio reikšmes atitinkamai „Vector“ konstruktoriuje, deklaruodamas eilutės objektų masyvą. Taigi galite pastebėti, kad masyvo ribai pasibaigus, jis padidėja pagal vertę, suteiktą konstruktoriui deklaravimo metu. Baigdamas sakau, kad naudoti „ArrayList“ yra geriau nei naudoti „Vector“, nes jis veikia greičiau ir geriau.
Apibrėžimas Vektorius
Panašumai:
Išvada: