Masyvai vs Arraylists
Masyvai yra dažniausiai naudojama duomenų struktūra elementų kolekcijai saugoti. Daugelyje programavimo kalbų pateikiami būdai, kaip lengvai deklaruoti masyvus ir prieigos elementus masyvuose. Masyvų sąrašą galima laikyti dinamine masyve, kurios dydis gali augti. Dėl šios priežasties programuotojui nereikia žinoti masyvo sąrašo dydžio, kai ji jį apibrėžia.
Kas yra masyvai?
Parodytas 1 paveiksle, yra kodo dalis, paprastai naudojama masyvo reikšmėms deklaruoti ir priskirti. 2 paveiksle pavaizduota, kaip masyvas atrodytų atmintyje.
int reikšmės [5]; reikšmės [0] = 100; reikšmės [1] = 101; reikšmės [2] = 102; reikšmės [3] = 103; reikšmės [4] = 104; |
1 paveikslas: Masyvo reikšmių deklaravimo ir priskyrimo kodas
100 | 101 | 102 | 103 | 104 |
Rodyklė: 0 | 1 | 2 | 3 | 4 |
2 paveikslas: Atmintyje saugomas masyvas
Aukščiau pateiktas kodas apibūdina masyvą, kuriame gali būti saugomi 5 sveikieji skaičiai. Prie jų prieinama naudojant indeksus nuo 0 iki 4. Viena svarbi masyvo savybė yra tai, kad visas masyvas yra paskirstomas kaip vienas atminties blokas ir kiekvienas elementas užima savo vietą masyve. . Kai masyvas yra apibrėžtas, jo dydis yra fiksuotas. Taigi, jei nesate tikri dėl masyvo dydžio sudarydami, turėtumėte apibrėžti pakankamai didelį masyvą, kad jis būtų saugioje pusėje. Bet dažniausiai iš tikrųjų naudojame mažiau elementų, nei skyrėme. Taigi iš tiesų iššvaistoma nemažai atminties. Kita vertus, jei „pakankamai didelis masyvas“ iš tikrųjų nėra pakankamai didelis, programa sudužtų.
Kas yra masyvai?
Masyvų sąrašą galima laikyti dinamine masyve, kurios dydis gali augti. Todėl masyvo sąrašai yra ideali vieta, kai jūs nežinote deklaravimo metu reikalaujamų elementų dydžio. „Java“ programoje masyvių sąrašai gali laikyti tik objektus, jie negali tiesiogiai laikyti primityvių tipų (galite įdėti primityvius tipus objekto viduje arba naudoti primityvių tipų įvyniojimo klases). Paprastai masyvų sąrašuose pateikiami įterpimo, ištrynimo ir paieškos metodai. Laiko sudėtingumas norint pasiekti elementą yra o (1), o įterpimo ir ištrynimo laiko sudėtingumas yra o (n). „Java“ programoje masyvių sąrašus galima apeiti naudojant įžvalgos kilpas, iteratorius arba tiesiog naudojant rodykles.
Kuo skiriasi masyvai nuo masyvų sąrašų
Nors masyvai ir masyvų sąrašai yra panašūs ta prasme, kad abu jie naudojami elementų kolekcijoms saugoti, jie skiriasi tuo, kaip jie yra apibrėžti. Apibrėžus masyvą, reikia nurodyti masyvo dydį, tačiau masyvo sąrašą galite apibrėžti nežinodami tikrojo dydžio. Prie masyvo sąrašo galite pridėti elementų, kai jis yra apibrėžtas, o tai nėra įmanoma naudojant masyvus. Bet „Java“ programoje masyvo sąrašai negali laikyti primityvių tipų, tačiau masyvai gali būti naudojami primityvių tipų laikymui. Bet jei jums reikia duomenų struktūros, kuri gali skirtis pagal dydį, geriausias pasirinkimas būtų masyvo sąrašas.