Ответ
Swift предоставляет три фундаментальных типа коллекций, каждый оптимизирован для своих задач.
1. Array (Массив)
- Упорядоченная коллекция элементов.
- Доступ по целочисленному индексу (
array[0]). - Допускает дубликаты значений.
- Порядок вставки сохраняется.
var fruits: [String] = ["Apple", "Banana", "Apple"] // Дубликаты разрешены
fruits.append("Orange") // Добавление в конец
let firstFruit = fruits[0] // Доступ по индексу: "Apple"
Сложность операций:
- Доступ по индексу – O(1).
- Поиск элемента – O(n).
- Вставка в начало/середину – O(n).
2. Set (Множество)
- Неупорядоченная коллекция уникальных элементов.
- Гарантирует, что каждый элемент присутствует только один раз.
- Очень быстрый поиск (O(1) в среднем), так как основан на хэш-таблице.
- Реализует математические операции (объединение, пересечение).
var uniqueNumbers: Set<Int> = [1, 2, 3, 1] // Фактически [1, 2, 3]
uniqueNumbers.insert(4)
if uniqueNumbers.contains(2) { // Быстрый поиск
print("Найдено!")
}
3. Dictionary (Словарь)
- Неупорядоченная коллекция пар ключ-значение.
- Ключи должны быть уникальными и хэшируемыми (
Hashable). - Оптимизирован для поиска значения по ключу (O(1) в среднем).
var scores: [String: Int] = ["Alice": 10, "Bob": 15]
scores["Charlie"] = 12 // Добавление
let bobScore = scores["Bob"] // 15 (быстрый доступ по ключу)
Сводная таблица
| Коллекция | Порядок | Уникальность | Ключевая операция |
|---|---|---|---|
| Array | Сохраняется | Дубликаты разрешены | Доступ по индексу |
| Set | Не гарантирован | Все элементы уникальны | Проверка принадлежности (contains) |
| Dictionary | Не гарантирован | Ключи уникальны | Доступ по ключу |
Почему это важно? Правильный выбор коллекции напрямую влияет на производительность и читаемость кода. Используйте Array для упорядоченных списков, Set для проверки уникальности и быстрого поиска, Dictionary для ассоциативного хранения данных.