Massiivide ja massiivistide erinevus

Massiivid vs massiivistid

Elemendid kogude salvestamiseks on kõige sagedamini kasutatavad andmestruktuurid massiivid. Enamik programmeerimiskeeli pakub meetodeid massiivide ja massiivides olevate elementide hõlpsaks deklareerimiseks. Massaristide nimekirja võib vaadelda kui dünaamilist massiivi, mille suurus võib kasvada. Sel põhjusel ei pea programmeerija seda määratledes teadma masilisti suurust.

Mis on massiivid?

Joonisel 1 on kooditükk, mida tavaliselt kasutatakse massiivi väärtuste deklareerimiseks ja määramiseks. Joonis 2 kujutab massiivi väljanägemist mälus.

int väärtused [5];

väärtused [0] = 100;

väärtused [1] = 101;

väärtused [2] = 102;

väärtused [3] = 103;

väärtused [4] = 104;

Joonis 1: Massiivile 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 mahutab 5 täisarvu ja millele pääseb juurde indeksitega 0 kuni 4. Massiivi üheks oluliseks omaduseks on see, et kogu massiiv eraldatakse ühe mäluplokkina ja iga element saab massiivis oma ruumi . Kui massiiv on määratletud, fikseeritakse selle suurus. Nii et kui te pole kompileerimise ajal massiivi suuruses kindel, peaksite määratlema piisavalt suure massiivi, et see oleks turvalises pooles. Kuid enamasti hakkame tegelikult kasutama vähem elemente, kui oleme eraldanud. Nii kulub tegelikult märkimisväärselt palju mälu. Teisest küljest, kui “piisavalt suur massiiv” pole tegelikult piisavalt suur, siis programm jookseb kokku.

Mis on massiivistid??

Massaristide nimekirja võib vaadelda kui dünaamilist massiivi, mille suurus võib kasvada. Seetõttu on massiivide loendid ideaalsed kasutamiseks olukorras, kus te ei tea deklareerimise ajal nõutavate elementide suurust. Java-s saavad massiivide nimekirjades hoida ainult objekte, primitiivseid tüüpe nad ei saa otse hoida (võite primitiivsed tüübid objekti sisse panna või kasutada primitiivsete tüüpide mähkimisklasse). Üldiselt on massiiviloendid varustatud meetoditega sisestamiseks, kustutamiseks ja otsimiseks. Elemendile juurdepääsu ajaline keerukus on o (1), samas kui sisestamisel ja kustutamisel on aja keerukus o (n). Java-keeles saab massiivide loendeid sirvida foreach-silmuste, iteraatorite või lihtsalt indeksite abil.

Mis vahe on massiividel ja massiivistidel?

Ehkki massiivid ja massiivid on sarnased selles mõttes, et neid mõlemaid kasutatakse elementide kogude hoidmiseks, erinevad nad nende määratlemise poolest. Massiivi suurus tuleb anda massiivi määratlemisel, kuid massiilisti saate määratleda tegelikku suurust teadmata. Elemente saab masüülloendisse lisada pärast selle määratlemist ja massiivide puhul pole see võimalik. Kuid Java-s ei saa massiivide nimekirjades hoida primitiivseid tüüpe, massiive saab kasutada aga primitiivsete tüüpide hoidmiseks. Kuid kui teil on vaja andmestruktuuri, mis võib selle suurust varieerida, oleks parim valik arüülrühm.