Sobes.tech
Назад к вопросам
Senior
3

Расскажи про устройство HashMap

Компании, где спрашивали
Octo

Ответ от нейросети

sobes.tech AI

HashMap в Java — это реализация структуры данных хеш-таблицы, которая хранит пары ключ-значение. Основной принцип работы — вычисление хеш-кода ключа, который используется для определения индекса в массиве бакетов (корзин). Каждый бакет содержит связный список или дерево (начиная с Java 8, если элементов много), чтобы разрешать коллизии — ситуации, когда разные ключи имеют одинаковый хеш.

При добавлении элемента HashMap:

  • Вычисляется хеш-код ключа и индекс бакета.
  • Если бакет пуст, элемент помещается туда.
  • Если бакет занят, происходит поиск по списку/дереву для замены или добавления нового элемента.

При поиске элемента по ключу:

  • Вычисляется индекс бакета по хешу ключа.
  • В бакете ищется элемент с равным ключом.

HashMap не гарантирует порядок элементов. Важные характеристики:

  • Время доступа — в среднем O(1), но в худшем случае может быть O(n).
  • При превышении определённого порога заполнения (load factor, обычно 0.75) происходит расширение массива и перераспределение элементов.

Пример создания и использования HashMap:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 3);
map.put("banana", 5);
int count = map.get("apple"); // 3