„ArrayList vs Vector“
Vektorius įgyvendina masyvus, kurie gali augti / trauktis vykdymo metu, kai pridedami arba pašalinami kai kurie elementai. Jo elementai pasiekiami naudojant sveikųjų skaičių rodyklę. Vektorių saugyklos valdymą apibūdina du laukai - talpa ir talpos padidėjimas. Tai įgyvendina keturias sąsajas:
* Sąrašas
* Įprastinė prieiga
* Klonuojamas
* Serializuojamos sąsajos
„ArrayList“, kaip ir vektoriai, taip pat įgyvendina keturias sąsajas. Vėlgi, kaip ir vektoriai, jo dydis gali keistis vykdant laiką. Be to, jis turi lauką, vadinamą talpa, kurio dydis yra toks pat didelis kaip „ArrayList“.
Tiek vektoriai, tiek „ArrayList“ yra tinkami elementams iš bet kurios vietos atkurti, taip pat elementams įterpti ar ištrinti iš konteinerių klasės pabaigos..
Iš API perspektyvos abu vektoriai ir „ArrayList“ yra labai panašūs. Taigi kur tiksliai slypi skirtumas tarp šių dviejų? Šie punktai šiek tiek paaiškins šį klausimą:
1. Sinchronizavimas: Vektoriai yra sinchronizuojami, bet „ArrayList“ nėra. Jei pridėsite arba ištrinsite elementus iš „ArrayList“, tai vadinama struktūrine modifikacija. Kai „ArrayList“ prieiga prie kelių gijų patenka kartu su kodą pakeičiančiu sąrašu, tada sąrašą reikia sinchronizuoti iš išorės. Trumpai tariant, vektorių turinys yra apsaugotas nuo siūlų, o „ArrayList“ - ne. Jei reikalavimas nenurodo saugaus sriegio rinkimo, reikėtų pasirinkti „ArrayList“, nes sinchronizacija pasiekia našumą. Nesinchronizuoti „ArrayLists“ yra greiti.
2. Duomenų augimas: Tiek „ArrayList“, tiek vektoriniai elementai saugomi kaip masyvai, tačiau vektorių numatytasis dydis yra 10, o „ArrayList“ nėra numatytojo dydžio. Kai vienas elementas pridedamas prie „ArrayList“ arba vektoriaus, yra tikimybė, kad bet kuri klasė gali išeiti iš kambario. Tokiu atveju vektorius pagal numatytuosius nustatymus padvigubina savo dydį, o „ArrayList“ dydis padidėja 50%. Vektorių atveju galite nustatyti padidėjimo vertę, kurios neįmanoma „ArrayList“.
3. Elementų aplankymas: „ArrayList“ turi pranašumą, nes prie jo elementų galite patekti paprasčiausiai naudodami rodyklę. Vektorių atveju, norint sukurti jo elementus, reikia sukurti iteratorių.
Santrauka:
1.Jei konteinerių klasę reikia modifikuoti vienu siūlu ar kokiu nors vietiniu kintamuoju, turėtumėte naudoti „ArrayList“.
2.Kai talpyklos klasė prieinama keliais siūlais, naudokite vektorius, kitaip turėsite atlikti rankinę sinchronizaciją.
3.Mes galime nurodyti prieaugio dydį naudodami vektorių, o su ArrayList negalime.
4.Vektorius sinchronizuojamas, o „ArrayList“ nėra.
5.Vektorius gali padidinti dydį dvigubai; „ArrayList“ gali jį padidinti 50%.