Разница между Array и ArrayList

Что такое Array и ArrayList?

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

Разница между массивом и Arraylist

  1. Resizable

Одно из основных и заметных различий между двумя структурами данных заключается в том, что массив Array является статическим по своей природе, что означает, что он является типом данных фиксированной длины, а ArrayList является динамическим по своей природе, что означает, что это структура данных переменной длины. С технической точки зрения, длина массива не может быть изменена или изменена после создания объекта массива. Он содержит последовательный набор элементов одного типа данных. Массивы в Java работают иначе, чем в C / C ++. ArrayList, с другой стороны, может изменять свой размер, и массивы могут расти по мере необходимости. Поскольку это динамическая структура данных, элементы могут быть добавлены и удалены из списка..

  1. Дженерики

Вы не можете создавать массивы универсальных классов интерфейсов в Java, поэтому массивы и универсальные шаблоны не идут рука об руку, что делает невозможным создание универсального массива по одной основной причине, что массивы являются ковариантными, а универсальные - инвариантными. Хотя Array является структурой данных фиксированной длины, он содержит объекты одного класса или примитивы определенного типа данных. Поэтому, если вы пытаетесь сохранить другой тип данных, отличный от указанного при создании объекта Array, он просто выдает «ArrayStoreException». ArrayList, с другой стороны, поддерживает Generics для обеспечения безопасности типов.

  1. Примитивы

Примитивные типы данных, такие как int, double, long и char, не допускаются в ArrayList. Он скорее содержит объекты, а примитивы не считаются объектами в Java. Массивы, с другой стороны, могут содержать примитивы и объекты в Java, потому что это одна из самых эффективных структур данных в Java для хранения объектов. Это агрегированный тип данных, предназначенный для хранения объектов одного и того же или другого типа..

  1. длина

Чтобы получить длину массива, код должен получить доступ к атрибуту длины, потому что нужно знать длину для выполнения операций над массивом. Хотя ArrayList использует метод size () для определения размера ArrayList, он довольно сильно отличается от определения длины массива. Атрибут метода size () определяет количество элементов в ArrayList, которое, в свою очередь, является емкостью ArrayList.

Например:

открытый класс ArrayLengthTest

public static void main (String [] args)

ArrayList arrList = new ArrayList ();

String [] items = «One», «Two», «Three»;

for (String str: items)

arrList.add (ул);

int size = items.size ();

System.out.println (размер);

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

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

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

В то время как обе структуры данных обеспечивают аналогичную производительность, поскольку ArrayList поддерживается Arrays, одна имеет небольшой перевес по сравнению с другими, в основном с точки зрения процессорного времени и использования памяти. Допустим, если вы знаете размер массива, вы, скорее всего, выберете ArrayList. Тем не менее, итерации по массиву немного быстрее, чем по ArrayList. Если в программе используется большое количество примитивов, массив будет работать значительно лучше, чем ArrayList, с точки зрения времени и памяти. Массивы - это низкоуровневый язык программирования, который можно использовать в реализациях коллекций. Однако производительность может отличаться в зависимости от выполняемой операции..

Array Vs. Список_массивов

массив ArrayList
Массив - это структура данных фиксированной длины, длина которой не может быть изменена после создания объекта массива.. ArrayList является динамическим по своей природе, что означает, что он может изменить свой размер, чтобы расти, когда требуется.
Размер массива остается неизменным по всей программе. Размер ArrayList может динамически увеличиваться в зависимости от нагрузки и емкости..
Он использует оператор присваивания для хранения элементов. Он использует атрибут add () для вставки элементов.
Он может содержать примитивы, а также объекты одного и того же или другого типа данных. Примитивы не допускаются в ArrayList. Он может содержать только типы объектов.
Массивы и Generics не идут рука об руку. Дженерики разрешены в ArrayList.
Массивы могут быть многомерными. ArrayList является одномерным.
Это нативный программный компонент, в котором элементы хранятся в смежных местах памяти. Это класс из инфраструктуры коллекций Java, где объекты никогда не хранятся в смежных местах.
Переменная длины используется для определения длины массива. Метод Size () используется для определения размера ArrayList.
Занимает меньше памяти, чем ArrayList для хранения указанных элементов или объектов. Занимает больше памяти, чем массив для хранения объектов.
Итерация по массиву быстрее, чем итерация по ArrayList. Итерирование по ArrayList значительно медленнее с точки зрения производительности.

Резюме

Хотя некоторые могут подумать, что реализация массивов в программе может дать результаты быстрее, чем при использовании ArrayLists по той же причине, что массивы представляют собой низкоуровневую структуру данных, производительность может варьироваться в зависимости от выполняемой вами операции. Что ж, длина массива фиксирована, тогда как размер ArrayList можно динамически увеличивать или уменьшать, поэтому ArrayList имеет небольшое преимущество над массивом с точки зрения функциональности. Однако, несмотря на различия, они также имеют некоторые сходства. Оба являются основанными на индексах структурами данных в Java, которые позволяют хранить объекты, и они оба допускают нулевые значения, а также дубликаты. Хорошо, если вы заранее знаете размер объектов, вам следует использовать массив, а если вы не уверены в размере, используйте ArrayList..