В чем разница между словарем и массивом как структурами данных?

«В чем разница между словарем и массивом как структурами данных?» — вопрос из категории Алгоритмы и структуры данных, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Словарь (Dictionary/Map) и Массив (Array/List) — фундаментальные структуры данных с разными принципами организации и доступа.

Массив:

  • Хранение: Упорядоченная коллекция элементов.
  • Доступ: По целочисленному индексу (позиции).
  • Ключевые операции: append, доступ по индексу [i], итерация по порядку.
  • Сложность: Доступ по индексу — O(1). Поиск по значению — O(n).
let array = ["Apple", "Banana", "Cherry"]
print(array[1]) // "Banana"

Словарь:

  • Хранение: Неупорядоченная (или с неопределенным порядком) коллекция пар ключ-значение.
  • Доступ: По уникальному ключу (часто строка или число).
  • Ключевые операции: Вставка/получение по ключу [key], проверка наличия ключа.
  • Сложность: В среднем O(1) для вставки, удаления и поиска по ключу (реализация на основе хэш-таблицы).
let dictionary = ["FR": "France", "US": "United States"]
print(dictionary["FR"]) // "France"

Когда что использовать:

  • Массив: Когда важен порядок элементов, нужен простой перебор или доступ по известной позиции.
  • Словарь: Когда нужна быстрая выборка данных по уникальному идентификатору (ключу), а порядок не важен.