Ответ
Элементы в HashMap добавляются в бакеты (корзины) на основе хэш-кода ключа. Порядок не гарантируется и зависит от:
- Хэш-функции ключа (
hashCode()). - Вместимости (capacity) и коэффициента загрузки (load factor).
- Коллизий — если хэши совпадают, элементы добавляются в виде связанного списка (или дерева, если бакет переполнен).
Пример:
HashMap<String, Integer> map = new HashMap<>();
map.put("A", 1); // Может попасть в бакет 0
map.put("B", 2); // Может попасть в бакет 1
Порядок итерации (keySet(), entrySet()) может не совпадать с порядком добавления. Для сохранения порядка используйте LinkedHashMap.