Razlika med nizi in seznami nizov

Razlika med nizi in seznami nizov
Razlika med nizi in seznami nizov

Video: Razlika med nizi in seznami nizov

Video: Razlika med nizi in seznami nizov
Video: Equipment corner - Marlin Build Issue(s) 2024, November
Anonim

Matrike proti seznamom matrik

Matrike so najpogosteje uporabljena podatkovna struktura za shranjevanje zbirke elementov. Večina programskih jezikov ponuja metode za preprosto deklariranje nizov in dostop do elementov v nizih. Seznam matrik je mogoče obravnavati kot dinamično matriko, ki se lahko poveča. Zaradi tega razloga programerju ni treba poznati velikosti matričnega seznama, ko ga definira.

Kaj so polja?

Na sliki 1 je prikazan del kode, ki se običajno uporablja za deklariranje in dodeljevanje vrednosti matriki. Slika 2 prikazuje, kako bi matrika izgledala v pomnilniku.

int vrednosti[5];

vrednosti[0]=100;

vrednosti[1]=101;

vrednosti[2]=102;

vrednosti[3]=103;

vrednosti[4]=104;

Slika 1: Koda za deklariranje in dodeljevanje vrednosti matriki

100 101 102 103 104
Indeks: 0 1 2 3 4

Slika 2: Matrika, shranjena v pomnilniku

Zgornja koda definira matriko, ki lahko shrani 5 celih števil in do njih se dostopa z uporabo indeksov od 0 do 4. Ena od pomembnih lastnosti matrike je, da je celotna matrika dodeljena kot en blok pomnilnika in vsak element dobi svoj svoj prostor v nizu. Ko je matrika definirana, je njena velikost fiksna. Torej, če niste prepričani o velikosti matrike v času prevajanja, bi morali definirati dovolj veliko matriko, da boste na varni strani. Toda največkrat bomo dejansko uporabili manj elementov, kot smo jih dodelili. Tako je precejšnja količina pomnilnika dejansko izgubljena. Po drugi strani pa, če »dovolj velik niz« dejansko ni dovolj velik, bi se program zrušil.

Kaj so Arraylists?

Arraylist je mogoče videti kot dinamično polje, ki lahko raste v velikosti. Zato so matrični seznami idealni za uporabo v situaciji, ko ne poznate velikosti zahtevanih elementov v času deklaracije. V Javi lahko matrični seznami hranijo samo objekte, ne morejo pa neposredno hraniti primitivnih tipov (lahko postavite primitivne tipe v objekt ali uporabite ovojne razrede primitivnih tipov). Na splošno so matrični seznami opremljeni z metodami za vstavljanje, brisanje in iskanje. Časovna zahtevnost dostopa do elementa je o(1), vstavljanje in brisanje pa ima časovno zahtevnost o(n). V Javi je mogoče sezname matrik prečkati z uporabo zank foreach, iteratorjev ali preprosto z uporabo indeksov.

Kakšna je razlika med nizi in seznami nizov

Čeprav so matrike in seznami matrik podobni v smislu, da se oba uporabljata za shranjevanje zbirk elementov, se razlikujejo po tem, kako so definirani. Velikost matrike je treba podati, ko je matrika definirana, vendar lahko definirate arraylist, ne da bi vedeli dejansko velikost. Elemente lahko dodajate na arraylist, potem ko je definiran, kar pa ni mogoče pri nizih. Toda v Javi seznami matrik ne morejo vsebovati primitivnih tipov, lahko pa se uporabljajo matrike za shranjevanje primitivnih tipov. Če pa potrebujete podatkovno strukturo, ki lahko spreminja svojo velikost, bi bil arraylist najboljša izbira.

Priporočena: