Как работает HashMap
в Java?
HashMap — это коллекция для хранения пар ключ–значение, обеспечивающая быстрый доступ к данным через хеш-функцию. Ключи уникальны, значения могут повторяться. Поиск, вставка и удаление работают в среднем за O(1).
Подробнее
HashMap реализует интерфейс Map
и хранит данные во внутреннем массиве "корзин" (buckets). Каждому ключу вычисляется хеш-код, который определяет индекс корзины. Если в одну корзину попадает несколько ключей (коллизия), элементы связываются в список или дерево (начиная с Java 8).
Основные методы:
put(K key, V value)
— добавить паруget(Object key)
— получить значение по ключуremove(Object key)
— удалить по ключуcontainsKey(Object key)
— проверить наличие ключа
Пример кода:
// Создание HashMap
import java.util.*;
Map<String, Integer> map = new HashMap<>();
map.put("apple", 3);
map.put("banana", 5);
// Получение значения
int count = map.get("apple"); // 3
Преимущества и недостатки HashMap
Преимущества | Недостатки |
---|---|
Быстрый доступ по ключу (O(1) в среднем) | Нет порядка элементов |
Гибкая работа с любыми объектами | Не потокобезопасен (используйте ConcurrentHashMap при необходимости) |
Допускает null ключ и значения |
Может "проседать" по производительности при плохих hashCode() |
Важно помнить:
- Если
equals()
иhashCode()
реализованы неверно — HashMap работает неправильно! - HashMap не гарантирует порядок элементов.