Разлики между Array срещу ArrayList

Array и ArrayList са важни структури от данни, които се използват за съхраняване на редица елементи и обработването им. Но има ключови разлики има ли между тях. Добрият програмист трябва да е наясно с сравненията между тях, за да може ефективно да реши какво да използва кога и защо.

Array

Масивът е структура от данни, в която можем да съхраняваме елементи от даден размер от подобен тип. Например масив от цели числа, масив от тип низ и т.н. Следователно, нормален масив в Java е статична структура на данни.

ArrayList

ArrayList е динамична структура на данни, където елементите могат да се добавят и премахват от списъка. Така че, ако не сте сигурни колко елементи ще има в масива ви, тази динамична структура на данните ще ви спести.

В тази статия ще обсъдим разликите между Array и ArrayList в Java.

Пример за разбиране на Array и ArrayList

Масивът е структура от данни, в която можем да съхраняваме елементи с определен фиксиран размер от подобен тип.

Пример на код:

Нека създадем масив от пет елемента от тип int. Ще повторим чрез тях, използвайки за цикъл

ArrayList е динамична структура на данни, където елементите могат да се добавят и премахват от списъка. Така че, ако не сте сигурни колко елементи ще има в масива ви, тази динамична структура на данните ще ви спести.

Пример на код:

Различни разлики между Array и ArrayList (Инфографика)

По-долу са най-добрите разлики между Array и ArrayList:

Ключови разлики между Array и ArrayList в Java

1. Гъвкавост

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

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

2. Изпълнение

Масивът е структура от данни, в която можем да съхраняваме елементи с определен фиксиран размер от подобен тип. ArrayList е динамична структура на данни, където елементите могат да се добавят и премахват от списъка. Всъщност ArrayList се реализира с помощта на масив в Java. Трябва да импортирате пакета java.util.ArrayList, за да използвате метода ArrayList (), за да създадете обект ArrayList.

Примерен кодов фрагмент на Array

Примерен код Snippet на ArrayList

3. Изпълнение

Въпреки че ArrayList е базиран основно на Array, виждаме разлики в производителността между тях. Това се дължи на типа на съхранение и функционалността на ArrayList. Виждаме разлики в производителността по отношение на времето на процесора и използването на паметта. В зависимост от операциите, които извършвате, производителността на Array и ArrayList ще варира:

ArrayList изисква повече памет за съхранение в сравнение с масив. Това е така, защото съхранението на подобни обекти изисква повече памет от съхранението на подобни променливи от примитивен тип.

операция resize (): ArrayList използва автоматично преоразмеряване, където се създава временен масив за копиране на елементи от стария масив в нов масив. Това забавя цялостното представяне.

операция get (): За достъп, базиран на индекс, и ArrayList и масив имат еднаква производителност, тъй като това изисква постоянно време.

операция add (): Тук виждаме ключовата разлика, тъй като добавянето на нов елемент в ArrayList изисква вътрешно две операции: Копиране и промяна на размера. Добавянето в ArrayList създава нов масив във фонов режим и копира елементи от стар в нов масив.

4. Примитиви

Масивът може да съхранява както примитивни, така и обектни типове елементи. От друга страна, ArrayList не може да съхранява примитивни типове; може да съхранява само обекти от същия тип.

Тогава как можем да съхраняваме цели числа в ArrayList?

Отговорът е способността за автобоксиране на JVM. Автобоксирането вътрешно преобразува примитива в неговите еквивалентни обекти.

Например:

Следователно автобоксирането вътрешно изпълнява по-долу неща

5. Тип Безопасност

Масивът може да съхранява само елементи от подобен тип. Ако искате да съхранявате различни видове елементи в масив, различен от посочените, той ще хвърли ArrayStoreException, докато създава обекта на този масив. Това изключение ще бъде хвърлено по време на изпълнение, тъй като масивът не е безопасен за тип; за масива няма проверка за компилиране.

Например:

От друга страна, ArrayList е безопасен за тип, тъй като осигурява безопасност на типа чрез generic. Generics позволява на компилатора да провери дали има несъответствие във типа по време на компилация.

6. Итерация на стойностите

ArrayList използва метода iterator () за създаване на колекцията. След това, използвайки цикъл за известно време, ще пресечем елементите един по един и ще отпечатваме стойностите.

От друга страна, можем да използваме за цикъл или за всеки цикъл, за да повторим през масив.

7. Дължина

В много от случаите на използване може да се наложи да получим размера на целия масив. В случая с Arraylist, това изчисление е доста пряко напред. Можем да получим дължина на ArrayList, използвайки метода size ().

От друга страна, всеки обект от масив има променлива дължина, която връща дължината на масива.

Например:

8. Добавяне на елементи

Добавянето или вмъкването е възможно в ArrayList, тъй като това е динамична структура на данни. Можем да използваме методът add (), за да вмъкваме елементи в ArrayList след създаването му.

От друга страна, размерът на масива е фиксиран. Въпреки това, можем да вмъкнем елементи в масив по задание. Не можем динамично да добавяме нови елементи извън размера на масива.

Например:

9. Размер

ArrayList е едноизмерен. Като има предвид, че масивът може да бъде многоизмерен.

Например:

Array и ArrayList - Таблица за сравнение

Нека обсъдим топ сравнение между Array и ArrayList

Основа за сравнениеArrayArrayList
гъвкавостМасивът е статична структура на данниArrayList е динамична структура на данни
Примитивнитеможе да съхранява както примитивни, така и обекти тип елементиможе да съхранява само обекти от същия тип.
Тип БезопасностМасивът може да съхранява само елементи от подобен тип. В противен случай той ще хвърли ArrayStoreException, докато създава обекта на този масив.ArrayList е безопасен за тип, тъй като осигурява безопасност на типа чрез генерични продукти.
Итерация на стойноститеизползвайте за цикъл или за всеки цикъл, за да постигнете итерация.Използва метода iterator () за създаване на колекцията
Добавяне на елементиможе да вмъква елементи в масив по задание.използвайте метод add () за вмъкване на елементи в ArrayList

Измерениемногоизмеренединствен двумерен

Заключение-Array срещу ArrayList

Това е всичко, което се отнася до важното разграничение между масив и ArrayList в Java. Най-важното жизнено отличие, което трябва да имате предвид, е, че масивът е статичен, докато ArrayList е динамичен по своята същност. Основно на това разграничение, трябва да използвате масив, ако разпознаете напред размерите, ако не сте сигурни, тогава просто използвайте ArrayList.

Препоръчителни статии

Това е ръководство за Array срещу ArrayList. Тук обсъждаме ключовите разлики на Array срещу ArrayList с инфографика, примери и таблица за сравнение. Можете да разгледате и другите ни предложени статии, за да научите повече -

  1. Java Vector срещу ArrayList
  2. C # масив срещу списък
  3. C срещу Java
  4. Предимства на масива
  5. Iterator в Java
  6. Предимства на Python Loops | пример