В каком порядке добавляются элементы в HashMap

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

Ответ

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

  1. Хэш-функции ключа (hashCode()).
  2. Вместимости (capacity) и коэффициента загрузки (load factor).
  3. Коллизий — если хэши совпадают, элементы добавляются в виде связанного списка (или дерева, если бакет переполнен).

Пример:

HashMap<String, Integer> map = new HashMap<>();
map.put("A", 1);  // Может попасть в бакет 0
map.put("B", 2);  // Может попасть в бакет 1

Порядок итерации (keySet(), entrySet()) может не совпадать с порядком добавления. Для сохранения порядка используйте LinkedHashMap.