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

Array и ArrayList являются важными структурами данных, которые используются для хранения ряда элементов и их обработки. Но есть ключевые различия между ними. Хороший программист должен знать о сравнении между ними, чтобы он или она могли эффективно решить, что использовать, когда и почему.

массив

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

ArrayList

ArrayList - это динамическая структура данных, в которой элементы можно добавлять и удалять из списка. Поэтому, если вы не уверены, сколько элементов будет в вашем массиве, эта динамическая структура данных спасет вас.

В этой статье мы обсудим различия между Array и ArrayList в Java.

Пример, чтобы понять и Array и ArrayList

Массив - это структура данных, в которой мы можем хранить элементы заданного фиксированного размера аналогичного типа.

Пример кода:

Давайте создадим массив из пяти элементов типа int. Мы будем перебирать их, используя цикл for

ArrayList - это динамическая структура данных, в которой элементы можно добавлять и удалять из списка. Поэтому, если вы не уверены, сколько элементов будет в вашем массиве, эта динамическая структура данных спасет вас.

Пример кода:

Личные различия между Array и ArrayList (Инфографика)

Ниже приведены основные различия между Array и ArrayList:

Основные различия между Array и ArrayList в Java

1. Гибкость

Массив - это статическая структура данных. Определив размер массива, вы не сможете изменить значение его размера. Следовательно, обычный массив в Java - это статическая структура данных, поскольку начальный размер массива фиксирован.

С другой стороны, ArrayList является гибким по размеру. Вы можете добавлять или удалять элементы из списка по вашему усмотрению. При удалении элементов из ArrayList мы присваиваем нулевой индекс, значение которого удаляется, и все значение индекса автоматически уменьшается на единицу. Подобное касается и дополнения.

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

Массив - это структура данных, в которой мы можем хранить элементы заданного фиксированного размера аналогичного типа. ArrayList - это динамическая структура данных, в которой элементы можно добавлять и удалять из списка. На самом деле ArrayList реализован с использованием массива в Java. Вам необходимо импортировать пакет java.util.ArrayList, чтобы использовать метод ArrayList () для создания объекта ArrayList.

Пример кода фрагмента массива

Пример кода Фрагмент ArrayList

3. Производительность

Хотя ArrayList в основном основан на Array, мы видим различия в производительности между ними. Это связано с типом хранилища и функциональностью ArrayList. Мы видим различия в производительности с точки зрения времени процессора и использования памяти. В зависимости от операций, которые вы выполняете, производительность Array и ArrayList будет варьироваться:

ArrayList требует больше памяти для хранения по сравнению с массивом. Это связано с тем, что для хранения похожих объектов требуется больше памяти, чем для хранения похожих переменных примитивного типа.

Операция resize (): ArrayList использует автоматическое изменение размера, где создается временный массив для копирования элементов из старого массива в новый массив. Это замедляет общую производительность.

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

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

4. Примитивы

Массив может хранить как элементарные, так и объектные типы элементов. С другой стороны, ArrayList не может хранить примитивные типы; он может хранить только объекты одного типа.

Тогда как мы можем хранить целочисленные значения в ArrayList?

Ответ - возможность автоматической упаковки JVM. Автобокс внутренне преобразует примитив в его эквивалентные объекты.

Например:

Следовательно, автобокс внутренне выполняет нижеуказанные вещи

5. Тип Безопасность

Массив может хранить только элементы аналогичного типа. Если вы хотите хранить различные типы элементов в массиве, отличном от указанных, он создаст исключение ArrayStoreException при создании объекта этого массива. Это исключение будет выдано во время выполнения, так как массив не является типо-безопасным; нет проверки во время компиляции для массива.

Например:

С другой стороны, ArrayList является типобезопасным, так как он обеспечивает безопасность типов с помощью обобщений. Обобщение позволяет компилятору проверять, нет ли несоответствия типа во время компиляции.

6. Перебор значений

ArrayList использует метод iterator () для создания коллекции. Затем, используя цикл while, мы будем обходить элементы один за другим и печатать значения.

С другой стороны, мы можем использовать для цикла или для каждого цикла, чтобы перебрать массив.

7. Длина

Во многих случаях нам может потребоваться получить размер всего массива. В случае Arraylist этот расчет довольно прост. Мы можем получить длину ArrayList с помощью метода size ().

С другой стороны, каждый объект массива имеет переменную длины, которая возвращает длину массива.

Например:

8. Добавление элементов

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

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

Например:

9. Размер

ArrayList является одномерным. Принимая во внимание, что массив может быть многомерным.

Например:

Array и ArrayList - Сравнительная таблица

Давайте обсудим лучшее сравнение между Array и ArrayList

Основа сравнениямассивArrayList
гибкостьМассив представляет собой статическую структуру данныхArrayList - это динамическая структура данных
Примитивыможет хранить элементы как примитивного, так и объектного типаможно хранить только объекты одного типа.
Тип безопасностиМассив может хранить только элементы аналогичного типа. В противном случае он создаст исключение ArrayStoreException при создании объекта этого массива.ArrayList является типобезопасным, так как он обеспечивает безопасность типов с помощью обобщений.
Перебор значенийиспользуйте для цикла или для каждого цикла для достижения итерации.Использует метод iterator () для создания коллекции
Добавление элементовможет вставлять элементы в массив по присваиванию.используйте метод add () для вставки элементов в ArrayList

измерениемногомерныйодномерный

Заключение-Массив против ArrayList

Это все, что касается важного различия между массивом и ArrayList в Java. Главное жизненное различие, которое вы должны иметь в виду, состоит в том, что массив является статическим, тогда как ArrayList является динамическим по своей природе. Основываясь главным образом на этом различии, вы должны использовать массив, если вы распознаете размеры впереди, если вы не уверены, то просто используйте ArrayList.

Рекомендуемые статьи

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

  1. Вектор Java против ArrayList
  2. C # Array vs List
  3. C против Java
  4. Преимущества массива
  5. Итератор в Java
  6. Преимущества петель Python | пример