Что такое Dictionary в Swift и каковы его основные характеристики?

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

Ответ

Dictionary (словарь) в Swift — это универсальная неупорядоченная коллекция, которая хранит пары ключ-значение. Каждый ключ в словаре уникален и используется для поиска соответствующего значения.

Ключевые характеристики:

  • Тип: Dictionary<Key, Value> или краткая форма [Key: Value].
  • Уникальность ключей: Все ключи должны быть уникальными. Попытка вставить значение с существующим ключом перезаписывает старое значение.
  • Производительность: Доступ к значению по ключу в среднем выполняется за время O(1), благодаря внутренней реализации на основе хеш-таблицы.
  • Порядок: Элементы не имеют гарантированного порядка. Начиная с Swift 5, порядок вставки сохраняется как деталь реализации, но на это не следует полагаться для логики программы.

Требования к ключу: Тип ключа (Key) должен соответствовать протоколу Hashable (например, String, Int, Double, Bool или пользовательские типы).

Базовые операции:

// Создание
var capitals: [String: String] = ["Франция": "Париж", "Япония": "Токио"]

// Добавление или изменение значения
capitals["Германия"] = "Берлин" // Добавление
capitals["Япония"] = "Киото"    // Изменение существующего

// Получение значения (возвращает Optional)
let paris = capitals["Франция"] // String?
if let tokyo = capitals["Япония"] {
    print(tokyo) // "Киото"
}

// Удаление
capitals["Германия"] = nil
let removedValue = capitals.removeValue(forKey: "Франция")

// Итерация
for (country, capital) in capitals {
    print("(country): (capital)")
}

Важные методы и свойства:

  • isEmpty, count — проверка на пустоту и количество элементов.
  • keys, values — коллекции всех ключей и значений.
  • updateValue(_:forKey:) — устанавливает значение и возвращает старое (если было).
  • removeAll() — очистка словаря.

Иммутабельность: Словарь, объявленный через let, является неизменяемым (нельзя добавлять, удалять или изменять элементы).