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

Какво е Array и ArrayList?

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

Разлика между Array и Arraylist

  1. Промяна на размера

Една от основните и забележими разлики между двете структури от данни е, че Array има статичен характер, което означава, че е тип данни с фиксирана дължина, докато ArrayList е динамичен по своята същност, което означава, че е структура с данни с променлива дължина. В техническо отношение дължината на Array не може да се променя или променя, след като обектът Array е създаден. Съдържа последователна колекция от елементи от същия тип данни. Масивите в Java работят по различен начин, отколкото функционират в C / C ++. ArrayList, от друга страна, може да преоразмерява себе си и масивите могат да растат, колкото е необходимо. Тъй като това е динамична структура на данни, елементите могат да се добавят и премахват от списъка.

  1. Generics

Не можете да създавате масиви от общи класове на интерфейси в Java, така че масивите и генеричните файлове не вървят ръка за ръка, което прави невъзможно създаването на генеричен масив поради една от основните причини, че масивите са ковариантни, докато генеричните файлове са инвариантни. Докато Array е структура с фиксирана дължина, тя съдържа обекти от същия клас или примитиви от конкретния тип данни. Така че, ако се опитате да съхранявате различен тип данни, различен от посочения, докато създавате Array обект, той просто хвърля „ArrayStoreException“. ArrayList, от друга страна, поддържа Generics, за да гарантира безопасността на типа.

  1. Примитивните

Примитивни типове данни като int, double, long и char не са разрешени в ArrayList. По-скоро държи на обекти и примитивите не се считат за обекти в Java. Масивите, от друга страна, могат да съдържат примитиви, както и обекти в Java, защото това е една от най-ефективните структури от данни в Java за съхранение на обекти. Това е обобщен тип данни, който е проектиран да побира обекти, които могат да бъдат от един и същ или различен тип.

  1. дължина

За да получи дължината на масива, кодът трябва да получи достъп до атрибута length, тъй като човек трябва да знае дължината за извършване на операции в Array. Докато ArrayList използва метод size (), за да определи размера на ArrayList, той е по-различен от определянето на дължината на ArrayList. Атрибутът метод (size) определя броя на елементите в ArrayList, което от своя страна е капацитетът на ArrayList.

Например:

публичен клас ArrayLengthTest

public static void main (String [] args)

ArrayList arrList = нов ArrayList ();

String [] items = “Един”, “Два”, “Три”;

за (String str: items)

arrList.add (STR);

int size = items.size ();

System.out.println (размер);

  1. изпълнение

Array е нативен програмен компонент в Java, които се създават динамично и използват оператора на присвояване, за да държат елементи, докато ArrayList използва атрибут add () за вмъкване на елементи. ArrayList е клас от рамката за събиране в Java, който използва набор от определени методи за достъп и промяна на елементите. Размерът на ArrayList може да се увеличава или намалява динамично. Елементите в масива се съхраняват на място в съседна памет и неговият размер остава статичен в целия.

  1. производителност

Докато и двете структури от данни осигуряват подобен вид производителност, тъй като ArrayList се поддържа от Arrays, едната има малко предимство спрямо друга, най-вече по отношение на времето на процесора и паметта. Да речем, ако знаете размера на масива, има вероятност да отидете с ArrayList. Итерацията над масив обаче е малко по-бърза от итерацията над ArrayList. Ако програмата включва голям брой примитиви, масивът ще се представи значително по-добре от ArrayList по отношение както на времето, така и на паметта. Масивите са език за програмиране на ниско ниво, който може да се използва в реализациите на колекция. Въпреки това, производителността може да варира в зависимост от операцията, която извършвате.

Масив Vs. ArrayList

Array ArrayList
Масивът е структура с данни с фиксирана дължина, чиято дължина не може да бъде променена, след като се създаде обект от масив. ArrayList е динамичен по своя характер, което означава, че може да промени размера си, за да расте, когато се налага.
Размерът на масива остава статичен в цялата програма. Размерът на ArrayList може да расте динамично в зависимост от натоварването и капацитета.
Той използва оператор за присвояване, за да съхранява елементи. Той използва атрибута add () за вмъкване на елементи.
Може да съдържа примитиви, както и обекти от същия или различен тип данни. Примитивите не са разрешени в ArrayList. Той може да съдържа само типове обекти.
Масивите и Generics не вървят ръка за ръка. Генеричните генери са разрешени в ArrayList.
Масивите могат да бъдат многоизмерни. ArrayList е едноизмерен.
Това е нативен програмен компонент, където елементите се съхраняват в съседни места за памет. Това е клас от рамката на колекциите на Java, където обектите никога не се съхраняват на съседни места.
Променливата на дължината се използва за определяне на дължината на масива. Метод Size () се използва за определяне на размера на ArrayList.
Заема по-малко памет от ArrayList за съхранение на определени елементи или обекти. Заема повече памет от масива за съхранение на обекти.
Итерацията през масив е по-бърза, отколкото итерацията над ArrayList. Итерацията през ArrayList е значително по-бавна по отношение на производителността.

резюме

Макар че някои може да мислят, че прилагането на масиви в дадена програма може да постигне резултати по-бързо, отколкото да прави същото с ArrayLists по простата причина, че масивите са структура от данни на ниско ниво, производителността може да варира в зависимост от операцията, която извършвате. Е, дължината на ArrayList е фиксирана, докато размерът на ArrayList може да се увеличава или намалява динамично, така че ArrayList има малко предимство пред Array по отношение на функционалността. Въпреки разликите обаче, те споделят и някои прилики. И двете са базирани на индекс структури от данни в Java, които ви позволяват да съхранявате обекти и двете позволяват нулеви стойности, както и дубликати. Е, ако предварително знаете размера на обектите, трябва да отидете с масив и ако не сте сигурни в размера, отидете с ArrayList.