Назад к вопросам
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