Как работает HashMap

«Как работает HashMap» — вопрос из категории Алгоритмы и структуры данных, который задают на 35% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HashMap хранит пары ключ-значение в "корзинах" (buckets) на основе хэш-кода ключа. При добавлении элемента:

  1. Вычисляется хэш ключа через hashCode()
  2. По хэшу определяется индекс корзины: index = hash & (capacity - 1)
  3. Если корзина пуста - элемент добавляется
  4. При коллизии (одинаковый хэш) используется цепочка (в Java 8 при длине >8 переходит на красно-черное дерево)

Пример:

HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 1);  // hash("apple") -> индекс корзины
map.get("apple");     // быстрый доступ по хэшу

Особенности:

  • Не гарантирует порядок
  • Разрешает один null-ключ
  • Потоконебезопасен (используйте ConcurrentHashMap)
  • Начальная емкость 16, load factor 0.75 (автоматическое расширение)

Видео-ответы