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.
Ссылки