Назад к вопросам
Middle
4
Расскажи про устройство HashMap.
Компании, где спрашивали
Лоция
Ответ от нейросети
sobes.tech AI
HashMap в Java — это структура данных, реализующая ассоциативный массив (словарь), где ключи сопоставляются со значениями с помощью хеш-функции.
Основные компоненты HashMap:
- Массив бакетов (bucket array): каждый элемент массива содержит связный список (или дерево в новых версиях) элементов с одинаковым хешем.
- Хеш-функция: вычисляет индекс бакета по ключу.
- Обработка коллизий: при совпадении хешей ключей элементы хранятся в связном списке или дереве внутри бакета.
При вставке элемента:
- Вычисляется хеш ключа.
- Определяется индекс бакета (обычно
hash % capacity). - Если бакет пуст, элемент помещается туда.
- Если бакет занят, происходит обход списка/дерева для поиска ключа или добавления нового элемента.
При поиске — аналогично: вычисляется индекс, затем перебираются элементы в бакете для поиска нужного ключа.
Пример простого использования:
Map<String, Integer> map = new HashMap<>();
map.put("apple", 3);
map.put("banana", 5);
int count = map.get("apple"); // 3
HashMap обеспечивает амортизированное время доступа O(1), но при большом количестве коллизий производительность может ухудшаться.