Ответ
java.util.Map<K, V> — интерфейс коллекции, хранящей пары ключ-значение. Ключи уникальны, каждому ключу соответствует ровно одно значение.
Основные реализации и их особенности:
| Реализация | Порядок итерации | Временная сложность (get/put) | Особенности |
|---|---|---|---|
HashMap |
Не гарантирован | O(1) в среднем | Наиболее распространённая. Использует хэш-таблицу. Допускает null ключ и значения. Не потокобезопасна. |
LinkedHashMap |
По порядку добавления (или порядку доступа) | O(1) | Расширяет HashMap, сохраняя порядок элементов через двусвязный список. Полезно для LRU-кэшей. |
TreeMap |
По отсортированному порядку ключей | O(log n) | Реализует NavigableMap. Ключи сортируются по их натуральному порядку (Comparable) или переданному Comparator. |
ConcurrentHashMap |
Не гарантирован | O(1) в среднем | Потокобезопасная реализация для многопоточных сред. Высокая производительность за счёт блокировок на уровне сегментов/бакетов. |
Пример использования HashMap:
Map<String, Integer> fruitBasket = new HashMap<>();
// Добавление пар
fruitBasket.put("apples", 5);
fruitBasket.put("oranges", 3);
// Получение значения по ключу
Integer appleCount = fruitBasket.get("apples"); // 5
// Проверка наличия ключа
boolean hasBananas = fruitBasket.containsKey("bananas"); // false
// Итерация по записям
for (Map.Entry<String, Integer> entry : fruitBasket.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
Типичные сценарии: кэширование, подсчёт частоты элементов, хранение конфигураций, реализация словарей.