Разлика между масиви и списъци с масиви

Разлика между масиви и списъци с масиви
Разлика между масиви и списъци с масиви

Видео: Разлика между масиви и списъци с масиви

Видео: Разлика между масиви и списъци с масиви
Видео: Списъци масиви с променлива дължина 2024, Юли
Anonim

Масиви срещу Arraylists

Масивите са най-често използваната структура от данни за съхраняване на колекция от елементи. Повечето езици за програмиране предоставят методи за лесно деклариране на масиви и достъп до елементи в масивите. Списъкът с масиви може да се разглежда като динамичен масив, който може да нараства по размер. Поради тази причина програмистът не трябва да знае размера на списъка с масиви, когато го дефинира.

Какво представляват масивите?

Показан на фигура 1, е част от кода, който обикновено се използва за деклариране и присвояване на стойности на масив. Фигура 2 изобразява как би изглеждал масив в паметта.

int стойности[5];

стойности[0]=100;

стойности[1]=101;

стойности[2]=102;

стойности[3]=103;

стойности[4]=104;

Фигура 1: Код за деклариране и присвояване на стойности на масив

100 101 102 103 104
Индекс: 0 1 2 3 4

Фигура 2: Масив, съхранен в паметта

Кодът по-горе дефинира масив, който може да съхранява 5 цели числа и те са достъпни чрез индекси от 0 до 4. Едно важно свойство на масива е, че целият масив се разпределя като единичен блок памет и всеки елемент получава своето собствено място в масива. След като масивът е дефиниран, размерът му е фиксиран. Така че, ако не сте сигурни за размера на масива по време на компилиране, ще трябва да дефинирате достатъчно голям масив, за да сте в безопасност. Но в повечето случаи всъщност ще използваме по-малко елементи, отколкото сме разпределили. Така че значително количество памет всъщност се губи. От друга страна, ако „достатъчно голям масив“всъщност не е достатъчно голям, програмата ще се срине.

Какво представляват Arraylists?

Списъкът с масиви може да се разглежда като динамичен масив, който може да нараства по размер. Ето защо списъците с масиви са идеални за използване в ситуация, в която не знаете размера на необходимите елементи по време на декларирането. В Java списъците с масиви могат да държат само обекти, те не могат да държат примитивни типове директно (можете да поставите примитивните типове вътре в обект или да използвате класовете обвивки на примитивните типове). Обикновено списъците с масиви са снабдени с методи за извършване на вмъкване, изтриване и търсене. Времевата сложност на достъпа до елемент е o(1), докато вмъкването и изтриването има времева сложност o(n). В Java списъците с масиви могат да бъдат обхождани с помощта на цикли foreach, итератори или просто с помощта на индексите.

Каква е разликата между масиви и списъци с масиви

Въпреки че масивите и списъците с масиви са сходни в смисъл, че и двата се използват за съхраняване на колекции от елементи, те се различават по начина, по който са дефинирани. Размерът на масива трябва да бъде даден, когато е дефиниран масив, но можете да дефинирате списък с масиви, без да знаете действителния размер. Можете да добавяте елементи към списък с масиви, след като е дефиниран, а това не е възможно с масиви. Но в Java списъците с масиви не могат да съдържат примитивни типове, но масивите могат да се използват за задържане на примитивни типове. Но ако имате нужда от структура от данни, която може да променя размера си, arraylist би бил най-добрият избор.

Препоръчано: