Відмінності між Array проти ArrayList

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

Масив

Масив - це структура даних, де ми можемо зберігати елементи заданого розміру подібного типу. Наприклад масив цілочисельних типів, масив типу рядка тощо. Отже, звичайний масив на Java - це статична структура даних.

ArrayList

ArrayList - це динамічна структура даних, де елементи можна додавати та вилучати зі списку. Тож якщо ви не впевнені, скільки елементів буде у вашому масиві, ця динамічна структура даних врятує вас.

У цій статті ми обговоримо відмінності між Array та ArrayList у Java.

Приклад для розуміння як Array, так і ArrayList

Масив - це структура даних, де ми можемо зберігати елементи заданого фіксованого розміру аналогічного типу.

Приклад коду:

Створимо масив із п’яти елементів типу int. Ми повторимо їх за допомогою циклу

ArrayList - це динамічна структура даних, де елементи можна додавати та вилучати зі списку. Тож якщо ви не впевнені, скільки елементів буде у вашому масиві, ця динамічна структура даних врятує вас.

Приклад коду:

Відмінності між головою та головою між Array та ArrayList (Інфографіка)

Нижче наведено основні відмінності між Array та ArrayList:

Основні відмінності між Array та ArrayList на Java

1. Гнучкість

Масив - це статична структура даних. Визначивши розмір масиву, ви не можете змінити значення його розміру. Тому звичайний масив на Java - це статична структура даних, оскільки початковий розмір масиву є фіксованим.

З іншого боку, ArrayList має гнучкі розміри. Ви можете додавати або видаляти елементи зі списку відповідно до вашої зручності. Видаляючи елементи з ArrayList, ми присвоюємо null індексу, значення якого видаляється, і все значення індексу зменшується на один автоматично. Подібне стосується і доповнення.

2. Реалізація

Масив - це структура даних, де ми можемо зберігати елементи заданого фіксованого розміру аналогічного типу. ArrayList - це динамічна структура даних, де елементи можна додавати та вилучати зі списку. Власне, ArrayList реалізований за допомогою масиву на Java. Вам потрібно імпортувати пакет java.util.ArrayList, щоб використовувати метод ArrayList () для створення об’єкта ArrayList.

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

Приклад коду фрагменту ArrayList

3. Продуктивність

Хоча ArrayList в основному базується на Array, ми бачимо відмінності в продуктивності між ними. Це пов’язано з типом зберігання та функціональністю ArrayList. Ми бачимо відмінності в продуктивності з точки зору часу процесора та використання пам'яті. Залежно від операцій, які ви виконуєте, продуктивність Array та ArrayList буде відрізнятися:

ArrayList потребує більше пам'яті для цілей зберігання в порівнянні з масивом. Це тому, що для зберігання подібних об'єктів потрібно більше пам'яті, ніж зберігання подібних змінних примітивного типу.

операція resize (): ArrayList використовує автоматичний розмір, де створюється тимчасовий масив для копіювання елементів зі старого масиву в новий масив. Це сповільнює загальну продуктивність.

Операція get (): Для доступу на основі індексу і ArrayList, і масив мають однакову продуктивність, оскільки для цього потрібен постійний час.

Операція add (): Тут ми бачимо ключову різницю, оскільки для додавання нового елемента в ArrayList потрібні дві операції внутрішньо: Скопіювати та змінити розмір. Додавання в ArrayList створює новий масив у фоновому режимі та копіює елементи зі старого в новий масив.

4. Примітиви

Масив може зберігати як примітивні, так і об'єктні типи елементів. З іншого боку, ArrayList не може зберігати примітивні типи; він може зберігати лише об'єкти одного типу.

Тоді як ми можемо зберігати цілі значення в ArrayList?

Відповідь - можливість автобоксингу JVM. Автобоксинг внутрішньо перетворює примітивне на його еквівалентні об'єкти.

Наприклад:

Отже, автобоксинг працює всередині нижче

5. Тип безпеки

Масив може зберігати лише елементи подібного типу. Якщо ви хочете зберігати різні типи елементів у масиві, відмінному від зазначеного, він викине ArrayStoreException під час створення об'єкта цього масиву. Цей виняток буде кинутий під час виконання, оскільки масив не є безпечним для типу; для масиву немає перевірки часу компіляції.

Наприклад:

З іншого боку, ArrayList є безпечним для типу, оскільки забезпечує безпеку типу за допомогою дженериків. Generics дозволяє компілятору перевірити, чи є невідповідність типу під час компіляції.

6. Ітерація значень

ArrayList використовує метод iterator () для створення колекції. Тоді, використовуючи цикл while, ми перекреслимо елементи один за одним і надрукуємо значення.

З іншого боку, ми можемо використовувати для циклу або для кожного циклу ітерацію через масив.

7. Довжина

У багатьох випадках використання нам може знадобитися отримати розмір усього масиву. У випадку з Arraylist цей розрахунок є досить прямим. Ми можемо отримати довжину ArrayList, використовуючи метод size ().

З іншого боку, кожен об'єкт масиву має змінну довжини, яка повертає довжину масиву.

Наприклад:

8. Додавання елементів

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

З іншого боку, розмір масиву фіксується. Однак ми можемо вставляти елементи в масив за призначенням. Ми не можемо динамічно додавати нові елементи, що перевищують розмір масиву.

Наприклад:

9. Вимір

ArrayList - одновимірний. Тоді як масив може бути багатовимірним.

Наприклад:

Array і ArrayList - таблиця порівняння

Давайте обговоримо найкраще порівняння між Array та ArrayList

Основи порівнянняМасивArrayList
ГнучкістьМасив - це статична структура данихArrayList - це динамічна структура даних
Примітивиможе зберігати як примітивний, так і об’єктний тип елементівможе зберігати лише об'єкти одного типу.
Тип безпекиМасив може зберігати лише елементи подібного типу. В іншому випадку він буде кидати ArrayStoreException під час створення об'єкта цього масиву.ArrayList є безпечним для типу, оскільки забезпечує безпеку типу за допомогою дженериків.
Ітерація значеньвикористовувати для циклу або для кожної петлі для досягнення ітерації.Використовує метод ітератора () для створення колекції
Додавання елементівможе вставляти елементи в масив за призначенням.використовуйте метод add () для вставки елементів у ArrayList

Вимірбагатовимірністьодновимірний

Висновок - масив проти ArrayList

Це все, що стосується важливої ​​різниці між масивом і ArrayList на Java. Найважливіше розрізнення, яке ви повинні пам’ятати, - це те, що масив є статичним, тоді як ArrayList є динамічним за своєю суттю. В основному, виходячи з цього розрізнення, ви повинні використовувати масив, якщо ви розпізнаєте розміри, що випереджають, якщо ви не впевнені, просто використовуйте ArrayList.

Рекомендовані статті

Це посібник для Array vs ArrayList. Тут ми обговорюємо ключові відмінності Array проти ArrayList з інфографікою, прикладами та таблицею порівняння. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

  1. Java Вектор проти ArrayList
  2. C # масив проти списку
  3. C проти Java
  4. Переваги масиву
  5. Ітератор на Java
  6. Переваги петлей Python | Приклад