Английское слово “map” переводится на русский как “карта”. Но в программировании оно также может подразумевать:
- Отображение или сопоставление — поскольку в структуре данных
Map
каждому ключу сопоставляется определённое значение, что напоминает “карту” соответствий.
Таким образом, Map
можно понимать как “карту соответствий” или “структуру отображения”, где ключи сопоставляются со значениями, что облегчает поиск и доступ к данным по уникальным ключам.
Map<K, V>
— это интерфейс в Java, представляющий коллекцию пар “ключ-значение”, где каждый ключ (K
) связан с определённым значением (V
). Основные особенности структуры Map
:
- Ассоциативная коллекция:
Map
организует данные так, чтобы к каждому значению можно было получить доступ по уникальному ключу. Ключи вMap
уникальны, и если добавить элемент с уже существующим ключом, то значение, связанное с этим ключом, будет обновлено. - Типы параметров:
K
— тип данных ключей. Это может быть любой объект, включая строки, числа или пользовательские классы. Главное, чтобы ключи были уникальными и правильно реализовали методыhashCode()
иequals()
(для структур типаHashMap
).V
— тип данных значений. Может быть любым объектом, в том числе и совпадающим с типомK
.- Основные реализации интерфейса
Map
: HashMap<K, V>
— не гарантирует порядок элементов, основан на хеш-таблице.TreeMap<K, V>
— хранит элементы в отсортированном порядке, основан на красно-черном дереве.LinkedHashMap<K, V>
— сохраняет порядок добавления элементов.ConcurrentHashMap<K, V>
— потокобезопасная версияHashMap
для многопоточных приложений.
Пример использования Map<K, V>
:
Map<String, Integer> ageMap = new HashMap<>();
ageMap.put("Alice", 30);
ageMap.put("Bob", 25);
// Получение возраста по имени
int age = ageMap.get("Alice"); // Возвращает 30
// Проверка наличия ключа
boolean hasBob = ageMap.containsKey("Bob"); // Возвращает true
Когда использовать Map
?
Map
применяют, когда требуется:
- Ассоциативное хранение данных (например, телефонная книга).
- Быстрый доступ к значениям по уникальным ключам.
- Подсчёт частоты элементов.
- Кэширование результатов для избежания повторных вычислений.