Massiivide ja massiiviloendite erinevus

Massiivide ja massiiviloendite erinevus
Massiivide ja massiiviloendite erinevus

Video: Massiivide ja massiiviloendite erinevus

Video: Massiivide ja massiiviloendite erinevus
Video: РЕМОНТ КОТОРЫЙ НЕ ОСТАВИТ РАВНОДУШНЫМ НИКОГО | Гарант-Ремонт. Отделочные работы в Бресте 2024, Juuli
Anonim

Massiivid vs massiiviloendid

Massiivid on kõige sagedamini kasutatav andmestruktuur elementide kogumi salvestamiseks. Enamik programmeerimiskeeli pakuvad meetodeid massiivide hõlpsaks deklareerimiseks ja massiivi elementidele juurdepääsuks. Massiiviloendit võib vaadelda kui dünaamilist massiivi, mille suurus võib kasvada. Seetõttu ei pea programmeerija massiiviloendi suurust selle määratlemisel teadma.

Mis on massiivid?

Joonisel 1 kujutatud kooditükk, mida tavaliselt kasutatakse massiivi väärtuste deklareerimiseks ja määramiseks. Joonisel 2 on kujutatud, kuidas massiiv mälus välja näeks.

int väärtused[5];

values[0]=100;

values[1]=101;

values[2]=102;

values[3]=103;

values[4]=104;

Joonis 1: Massiivi väärtuste deklareerimise ja määramise kood

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

Joonis 2: Mällu salvestatud massiiv

Koodi kohal määratleb massiivi, mis suudab salvestada 5 täisarvu ja millele pääseb juurde indeksite 0 kuni 4 abil. Massiivi üks oluline omadus on see, et kogu massiiv eraldatakse ühe mäluplokina ja iga element saab oma oma ruum massiivis. Kui massiiv on määratletud, on selle suurus fikseeritud. Seega, kui te pole kompileerimise ajal massiivi suuruses kindel, peaksite defineerima piisav alt suure massiivi, et olla turvalises pooles. Kuid enamasti kasutame me tegelikult vähem elemente, kui oleme eraldanud. Seega kulub märkimisväärne hulk mälu tegelikult raisku. Teisest küljest, kui "piisav alt suur massiiv" pole tegelikult piisav alt suur, jookseb programm kokku.

Mis on massiiviloendid?

Massiiviloendit võib vaadelda kui dünaamilist massiivi, mille suurus võib kasvada. Seetõttu on massiiviloendid ideaalsed kasutamiseks olukorras, kus te ei tea deklareerimise ajal nõutavate elementide suurust. Javas saavad massiiviloendid hoida ainult objekte, nad ei saa sisaldada otse primitiivseid tüüpe (saate paigutada primitiivsed tüübid objekti sisse või kasutada primitiivsete tüüpide ümbrisklasse). Üldjuhul on massiiviloendid varustatud meetoditega sisestamise, kustutamise ja otsimise teostamiseks. Elemendile juurdepääsu ajaline keerukus on o(1), samas kui sisestamise ja kustutamise ajaline keerukus on o(n). Javas saab massiiviloendeid läbida foreach-silmuste, iteraatorite või lihts alt indeksite abil.

Mis vahe on massiividel ja massiiviloenditel

Kuigi massiivid ja massiiviloendid on sarnased selles mõttes, et neid mõlemaid kasutatakse elementide kogumite salvestamiseks, erinevad nad nende defineerimise poolest. Massiivi suurus tuleb anda massiivi määratlemisel, kuid massiiviloendi saab määratleda ka tegelikku suurust teadmata. Massiiviloendisse saab elemente lisada pärast selle määratlemist ja massiivide puhul pole see võimalik. Kuid Java puhul ei saa massiiviloendid sisaldada primitiivseid tüüpe, kuid massiive saab kasutada primitiivsete tüüpide hoidmiseks. Kui aga vajate andmestruktuuri, mille suurust saab muuta, oleks parim valik massiiviloend.

Soovitan: