Sobes.tech
Junior

Каква е разликата между колекции и масиви?

sobes.tech AI

Отговор от AI

В Swift няма отделен тип "колекция". Съществува протоколът Collection, към който принадлежат различни типове, включително Array, Set и Dictionary.

Основните разлики между Array и другите типове, които спазват протокола Collection:

  1. Ред на елементите:

    • Array: Подредена колекция. Елементите се съхраняват в определен ред и се достъпват по индекс.
    • Set: Неподредена колекция от уникални елементи.
    • Dictionary: Неподредена колекция от двойки "ключ-стойност".
  2. Достъп по индекс:

    • Array: Поддържа достъп до елементите чрез цяло число индекс.
    • Set: Не поддържа директен достъп по индекс.
    • Dictionary: Достъпът до стойностите става чрез ключ.
  3. Уникалност на елементите:

    • Array: Може да съдържа дублиращи се елементи.
    • Set: Съдържа само уникални елементи.
    • Dictionary: Ключовете трябва да са уникални, стойностите могат да се повтарят.
  4. Производителност:

    • Достъпът по индекс в 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]