Какво е Array и ArrayList?

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

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

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


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

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


  1. Generics

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


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

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


  1. дължина

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

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

Например:

публичен клас 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

резюме

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

Препратки

  • Фланаган, Дейвид. Java в ядка (5-то издание). Себастопол: O’Reilly Media, 2005. Печат
  • Шилдт, Хърбърт. Java: Пълната справка. New York: McGraw-Hill Education, 2004. Печат
  • Себеста, Робърт В. Концепции за езици на програмиране (7-мо изд.). Бостън: Адисън-Уесли, 2006. Печат
  • „Кредитна снимка: https://stackoverflow.com/questions/20585702/find-smallest-integer-value-in-array-list-in-java-without-arrays-sort“
  • „Кредитна снимка: https://stackoverflow.com/questions/18580607/how-to-remove-elements-in-an-arraylist-start-from-an-indicated-index“