Різниця між масивами та Arraylists

Масиви проти 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?

Масив може розглядатися як динамічний масив, який може збільшуватися в розмірах. Таким чином, масиви arraylists ідеально підходять для використання в ситуації, коли ви не знаєте розмір елементів, необхідних на момент декларування. У Java масиви архітектури можуть містити лише об'єкти, вони не можуть містити примітивні типи безпосередньо (ви можете помістити примітивні типи всередині об'єкта або використовувати класи обгортки примітивних типів). Як правило, арлайстисти мають методи для вставки, видалення та пошуку. Часова складність доступу до елемента - o (1), тоді як вставка та вилучення має часову складність o (n). На Java можна пересувати масиви масивів за допомогою циклів foreach, ітераторів або просто за допомогою індексів.

Яка різниця між масивами та Arraylists

Незважаючи на те, що масиви та масиви схожі за тим, що обидва вони використовуються для зберігання колекцій елементів, вони відрізняються тим, як їх визначають. Розмір масиву повинен бути заданий, коли масив визначений, але ви можете визначити масив, не знаючи фактичного розміру. Ви можете додати елементи до масиву після його визначення, а це неможливо з масивами. Але на Java, масиви архівів не можуть містити примітивні типи, але масиви можна використовувати для утримання примітивних типів. Але якщо вам потрібна структура даних, яка може змінюватись за її розмірами, найкращим вибором виявиться arraylist.