Что такое Map в Dart?

«Что такое Map в Dart?» — вопрос из категории Dart Core, который задают на 36% собеседований Flutter Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Map в Dart — это коллекция, хранящая данные в виде пар ключ-значение. Каждый ключ уникален и используется для доступа к соответствующему значению.

  • Типы: По умолчанию создается LinkedHashMap, сохраняющая порядок вставки. Также есть HashMap (порядок не гарантирован).
  • Изменяемость: Map может быть изменяемым (var map = {};) или неизменяемым (const map = {...};).
  • Типизация: Ключи и значения могут быть любого типа. Рекомендуется использовать явную типизацию для безопасности: Map<String, int> scores = {};

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

// Создание и инициализация Map
Map<String, String> countryCapital = {
  'Япония': 'Токио',
  'Германия': 'Берлин',
};

// Добавление или обновление элемента
countryCapital['Франция'] = 'Париж';

// Получение значения по ключу
String? capital = countryCapital['Германия']; // 'Берлин'
// Важно: оператор [] возвращает nullable тип, если ключ может отсутствовать.

// Проверка наличия ключа
if (countryCapital.containsKey('Италия')) { ... }

// Итерация по Map
countryCapital.forEach((key, value) {
  print('$key: $value');
});

// Преобразование
List<String> countries = countryCapital.keys.toList();
List<String> capitals = countryCapital.values.toList();

Типичное использование в Flutter: хранение конфигураций, кэширование данных, передача аргументов (например, Map<String, dynamic> для ModalRoute.of(context)!.settings.arguments).

Видео-ответы