HashMaps в Java 8 — это реализация класса AbstractMap, позволяющая нам хранить пару ключ-значение внутри неупорядоченной структуры.

Каждый элемент в структуре состоит из пары Ключ-Значение, в которой каждый ключ в структуре данных уникален. Мы можем использовать различные типы, такие как целые числа, строки или символы, в качестве значения ключа, но мы должны уметь отличать их друг от друга. В качестве значения мы можем хранить любой примитив или объект, даже нулевой объект!

Применение

Мы определяем HashMap в java с определением

HashMap‹KEY,VALUE› map=new HashMap‹KEY,VALUE›();

Это позволяет нам использовать любую определенную функцию HashMap, такую ​​как put(), getKey() и многие другие, для этого конкретного объекта.

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

Время выполнения

Java HashMap допускает операции с постоянным временем (O(1)) для двух основных операций, get() и put(). Однако это подпадает под предположение, что хеш-функция для типа данных также выполняется в постоянное время. Подробнее о хешировании можно прочитать здесь.

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

Чтобы получить объект по ключу, мы просто хэшируем значение ключа и проверяем это «ведро» на наличие любого объекта, содержащего ключ. Таким образом, если каждый элемент хэш-карты содержится в одном сегменте, мы на самом деле не получаем никакой эффективности, поскольку каждый элемент просто хранится в одном LinkedList.

Ссылки

HashMap в Java — javatpoint

HashMap (платформа Java SE 7) (oracle.com)