Что такое словарь (Map) и для чего он используется?

«Что такое словарь (Map) и для чего он используется?» — вопрос из категории Алгоритмы и структуры данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Словарь (Map) — это структура данных, хранящая пары «ключ-значение». Ключи уникальны, каждому ключу соответствует ровно одно значение.

Основные цели использования:

  • Быстрый поиск по ключу: Получение значения по его ключу в среднем за O(1) (в HashMap).
  • Ассоциация данных: Логическая связь одного объекта с другим (например, идентификатор пользователя -> объект пользователя).
  • Устранение дубликатов: Коллекция уникальных ключей.
  • Подсчет частот (частотный словарь): Ключ — элемент, значение — сколько раз он встретился.

Пример на Java (HashMap):

Map<String, Integer> cityPopulation = new HashMap<>();
// Добавление данных
cityPopulation.put("Москва", 13_000_000);
cityPopulation.put("Санкт-Петербург", 5_600_000);

// Быстрое получение значения по ключу
int moscowPop = cityPopulation.get("Москва"); // 13000000

// Проверка наличия ключа
boolean hasLondon = cityPopulation.containsKey("Лондон"); // false

// Итерация по парам
for (Map.Entry<String, Integer> entry : cityPopulation.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

Распространенные реализации в Java: HashMap (не гарантирует порядок), LinkedHashMap (сохраняет порядок добавления), TreeMap (хранит ключи отсортированными).