Junior
Каква е разликата между колекции и масиви?
sobes.tech AI
Отговор от AI
В Swift няма отделен тип "колекция". Съществува протоколът Collection, към който принадлежат различни типове, включително Array, Set и Dictionary.
Основните разлики между Array и другите типове, които спазват протокола Collection:
-
Ред на елементите:
Array: Подредена колекция. Елементите се съхраняват в определен ред и се достъпват по индекс.Set: Неподредена колекция от уникални елементи.Dictionary: Неподредена колекция от двойки "ключ-стойност".
-
Достъп по индекс:
Array: Поддържа достъп до елементите чрез цяло число индекс.Set: Не поддържа директен достъп по индекс.Dictionary: Достъпът до стойностите става чрез ключ.
-
Уникалност на елементите:
Array: Може да съдържа дублиращи се елементи.Set: Съдържа само уникални елементи.Dictionary: Ключовете трябва да са уникални, стойностите могат да се повтарят.
-
Производителност:
- Достъпът по индекс в
Arrayе обикновено по-бърз (O(1) средно). - Търсенето на елемент в
Setили по ключ вDictionaryе обикновено по-бързо (O(1) средно) в сравнение с търсенето вArray(O(n)).
- Достъпът по индекс в
Пример за използване на Array:
// Създаване на масив от низове
var names: [String] = ["Alice", "Bob", "Charlie"]
// Достъп до елемент по индекс
let firstPerson = names[0] // "Alice"
// Добавяне на елемент
names.append("David") // ["Alice", "Bob", "Charlie", "David"]
Пример за използване на Set:
// Създаване на множество от цели числа
var uniqueNumbers: Set<Int> = [1, 2, 3, 3, 4] // {1, 2, 3, 4} - дублиращият се елемент е премахнат
// Проверка дали съдържа елемент
let containsThree = uniqueNumbers.contains(3) // true
Пример за използване на Dictionary:
// Създаване на речник "име - възраст"
var ages: [String: Int] = ["Alice": 30, "Bob": 25]
// Достъп до стойност по ключ
let aliceAge = ages["Alice"] // 30
// Добавяне на нова двойка
ages["Charlie"] = 35 // ["Alice": 30, "Bob": 25, "Charlie": 35]