Разница между ArrayList и HashMap в Java

Опубликовано: 15 Сентября, 2022

ArrayList является частью структуры коллекции и присутствует в пакете java.util. Он предоставляет нам динамические массивы в Java. Хотя это может быть медленнее, чем стандартные массивы, но может быть полезно в программах, где требуется много манипуляций с массивом. HashMap является частью коллекции Java, начиная с Java 1.2. Он обеспечивает базовую реализацию интерфейса карты Java. Он хранит данные в парах (Ключ, Значение), и для доступа к значению необходимо знать его ключ. HashMap известен как HashMap, потому что он использует технику, называемую хешированием.

Hashing is a technique of converting a large String to a small String that represents the same String. A shorter value helps in indexing and faster searches. HashSet also uses HashMap internally. It internally uses a link list to store key-value pairs already explained in HashSet in detail and further articles.

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

Во-первых, давайте обсудим сходство между ArrayList и HashMap в Java .

  • ArrayList и HashMap не синхронизированы. Поэтому, чтобы использовать их в многопоточной среде, их необходимо сначала синхронизировать.
  • И ArrayList, и HashMap допускают значение null. ArrayList допускает нулевые значения, а HashMap допускает нулевые ключи и значения
  • И ArrayList, и HashMap допускают дублирование, ArrayList допускает дублирование элементов, а HashMap допускает дублирование значений.
  • И ArrayList, и HashMap можно пройти через Iterator в Java.
  • Оба Somewhere используют массив, ArrayList поддерживается массивом, а HashMap также внутренне реализован Array.
  • Оба используют метод get(), метод ArrayList.get() работает на основе индекса, а метод HashMap.get() принимает один параметр key_element типа объекта и ссылается на ключ, связанное значение которого должно быть извлечено, поэтому оба обеспечивают производительность с постоянным временем.

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

  • Иерархия наряду с синтаксисом
  • Ведение порядка размещения
  • Потребление памяти
  • Обработка повторяющихся элементов
  • Простота получения элемента
  • Хранение нулевых элементов

Различия между ArrayList и HashMap в Java

1. Иерархия рядом с синтаксисом

Реализованный интерфейс: ArrayList реализует интерфейс списка, а HashMap — реализацию интерфейса карты.

Синтаксис: объявление класса ArrayList

public class ArrayList 
extends AbstractList 
implements List, RandomAccess, Cloneable, Serializable

Синтаксис: объявление класса HashMap

public class HashMap 
extends AbstractMap 
implements Map, Cloneable, Serializable  

2. Ведение заказа на размещение

ArrayList поддерживает порядок вставки, в то время как HashMap не поддерживает порядок вставки, что означает, что ArrayList возвращает элементы списка в том же порядке, в то время как HashMap не поддерживает какой-либо порядок, поэтому возвращаемые пары "ключ-значение" имеют любой порядок.

Пример:

3. Потребление памяти

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

Синтаксис: ArrayList

list.add("A");
// String value is stored in ArrayList

Синтаксис: HashMap

hm.put(1, "A");
// Two String values stored
// as the key value pair in HashMap

4. Дублирование обработки элементов

ArrayList допускает дублирование элементов, в то время как HashMap не допускает дублирование ключей, но допускает дублирование значений.

Пример

5. Простота получения элемента

В ArrayList элемент можно легко получить, указав его индекс. Но в HashMap элементы извлекаются по соответствующему ключу. Это означает, что ключ нужно помнить всегда.

Note: ArrayList get(index) method always gives O(1) time complexity While HashMap get(key) can be O(1) in the best case and O(n) in the worst case time complexity.

Пример

6. Хранение нулевых элементов

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

Пример

Итак, давайте разберемся в различиях между ArrayList и HashMap в таблице:

ArrayList

HashMap

Java ArrayList реализует интерфейс списка
Java HashMap реализует интерфейс Map
ArrayList всегда поддерживает порядок вставки элементов
HashMap не поддерживает порядок вставки.
ArrayList хранит только значение или элемент
HashMap хранит пары ключей и значений
ArrayList может содержать повторяющиеся элементы
HashMap не содержит повторяющихся ключей, но содержит повторяющиеся значения.
У нас может быть любое количество нулевых элементов в ArrayList.
У нас может быть только один нулевой ключ и любое количество нулевых значений в HashMap.
Метод ArrayList get() всегда дает производительность O(1)
Метод HashMap get() может быть O (1) в лучшем случае и O (n) в худшем случае.