Английское слово “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 применяют, когда требуется:
- Ассоциативное хранение данных (например, телефонная книга).
- Быстрый доступ к значениям по уникальным ключам.
- Подсчёт частоты элементов.
- Кэширование результатов для избежания повторных вычислений.
