Для чего используется интерфейс Map в Java?

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

Ответ

Интерфейс Map<K, V> представляет структуру данных «ключ-значение», где каждый уникальный ключ ассоциирован с одним значением.

Основные применения:

  1. Быстрый поиск по ключу (в HashMap — в среднем O(1)).
  2. Кэширование результатов вычислений.
  3. Агрегация и группировка данных (ключ — критерий группировки).
  4. Хранение конфигураций и параметров.

Пример использования HashMap:

Map<String, Integer> cityPopulation = new HashMap<>();
cityPopulation.put("Tokyo", 37_400_000);
cityPopulation.put("Delhi", 31_400_000);

// Получение значения по ключу
Integer tokyoPop = cityPopulation.get("Tokyo"); // 37400000

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

Важные реализации и их особенности:

  • HashMap — высокая производительность, не гарантирует порядок.
  • LinkedHashMap — сохраняет порядок добавления элементов.
  • TreeMap — сортирует ключи по их естественному порядку или компаратору.

Ключевое требование: Ключи должны корректно переопределять методы equals() и hashCode().