Різниця між Array і ArrayList

Що таке Array та ArrayList?

І Array, і ArrayList - це структури даних на основі індексу, які часто використовуються в програмах Java. Концептуально кажучи, ArrayList внутрішньо підтримується масивами, однак розуміння різниці між ними є ключем до того, щоб стати чудовим розробником Java. Це досить основний крок для початку, особливо для початківців, які щойно почали кодування. Хоча обидва використовуються для зберігання в Java елементів, які можуть бути або примітивами, або об’єктами, вони мають справедливу частку відмінностей у функціональності та продуктивності. Основна різниця між ними полягає в тому, що Array є статичним, тоді як ArrayList є динамічним за своєю суттю. Ця стаття порівнює два аспекти з різних аспектів, щоб ви могли вибрати один над іншим.

Різниця між Array і Arraylist

  1. Змінна зміна

Однією з головних і помітних відмінностей між двома структурами даних є те, що масив має статичну природу, це означає, що це тип даних фіксованої довжини, тоді як ArrayList має динамічний характер, тобто означає, що це структура даних змінної довжини. У технічному плані довжина масиву не може бути змінена або змінена після створення об'єкта Array. Він містить послідовну колекцію елементів одного типу даних. Масиви на Java працюють інакше, ніж вони функціонують у C / C ++. ArrayList, з іншого боку, може змінити розмір, і масиви можуть зростати у міру необхідності. Оскільки це динамічна структура даних, елементи можна додавати та вилучати зі списку.

  1. Дженріки

Ви не можете створити масиви загальних класів інтерфейсів на Java, тому масиви та дженерики не йдуть рука об руку, що робить неможливим створення загального масиву з тієї основної причини, що масиви є коваріантними, тоді як генерики є інваріантними. Хоча масив - це структура даних фіксованої довжини, вона містить об'єкти одного класу або примітиви певного типу даних. Отже, якщо ви намагаєтесь зберігати інший тип даних, відмінний від зазначеного під час створення об’єкта Array, він просто викидає "ArrayStoreException". ArrayList, з іншого боку, підтримує Generics для забезпечення безпеки типу.

  1. Примітиви

Примітивні типи даних, такі як int, double, long та char, заборонені в ArrayList. Він швидше містить об'єкти, а примітиви не вважаються об'єктами на Java. Масиви, з іншого боку, можуть містити примітиви, а також об'єкти на Java, оскільки це одна з найбільш ефективних структур даних на Java для зберігання об'єктів. Це агрегований тип даних, призначений для розміщення об'єктів, які можуть бути одного або іншого типу.

  1. Довжина

Щоб отримати довжину масиву, коду потрібно отримати доступ до атрибуту length, оскільки треба знати довжину для виконання операцій над масивом. Хоча ArrayList використовує метод size () для визначення розміру 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
Масив - це структура даних фіксованої довжини, довжину якої неможливо змінити після створення об’єкта масиву. ArrayList є динамічним за своєю суттю, а це означає, що він може змінити розмір, щоб зрости, коли це потрібно.
Розмір масиву залишається статичним у всій програмі. Розмір ArrayList може динамічно зростати залежно від навантаження та потужності.
Він використовує оператор призначення для зберігання елементів. Для вставки елементів використовується атрибут add ().
Він може містити примітиви, а також об'єкти одного або іншого типу даних. Примітиви заборонені в ArrayList. Він може містити лише типи об'єктів.
Масиви та дженерики не йдуть рука об руку. У ArrayList дозволено загальне походження.
Масиви можуть бути багатовимірними. ArrayList - одновимірний.
Це нативний компонент програмування, де елементи зберігаються в суміжних місцях пам'яті. Це клас із рамки колекцій Java, де об'єкти ніколи не зберігаються у суміжних місцях.
Змінна довжина використовується для визначення довжини масиву. Метод size () використовується для визначення розміру ArrayList.
Займає менше пам'яті, ніж ArrayList, для зберігання заданих елементів або об'єктів. Займає більше пам’яті, ніж масив для зберігання об’єктів.
Ітерація через масив швидша, ніж ітерація через ArrayList. Ітерація через ArrayList значно повільніше з точки зору продуктивності.

Підсумок

Хоча деякі можуть подумати, що реалізація масивів у програмі може отримати результати швидше, ніж робити те ж саме з ArrayLists з тієї простої причини, що масиви є структурою даних низького рівня, продуктивність може змінюватися залежно від операції, яку ви виконуєте. Ну, довжина масиву є фіксованою, тоді як розмір ArrayList можна динамічно збільшувати або зменшувати, тому ArrayList має невелику перевагу над масивом з точки зору функціональності. Однак, незважаючи на відмінності, вони поділяють і деякі подібності. Обидва - це структури даних на основі індексу на Java, які дозволяють зберігати об'єкти, і вони дозволяють нульові значення, а також дублікати. Ну, якщо ви заздалегідь знаєте розмір об'єктів, вам слід перейти з масивом, і якщо ви не впевнені в розмірі, перейдіть з ArrayList.