Sobes.tech
Junior

Jaka jest różnica między kolekcjami a tablicami?

sobes.tech AI

Odpowiedź od AI

W Swift nie ma oddzielnego typu "kolekcji". Istnieje protokół Collection, do którego należą różne typy, w tym Array, Set i Dictionary.

Główne różnice między Array a innymi typami spełniającymi protokół Collection:

  1. Kolejność elementów:

    • Array: Kolekcja uporządkowana. Elementy są przechowywane w określonym porządku i dostępne przez indeks.
    • Set: Nieuporządkowana kolekcja unikalnych elementów.
    • Dictionary: Nieuporządkowana kolekcja par "klucz-wartość".
  2. Dostęp przez indeks:

    • Array: Obsługuje dostęp do elementów przez indeks całkowity.
    • Set: Nie obsługuje bezpośredniego dostępu przez indeks.
    • Dictionary: Dostęp do wartości odbywa się przez klucz.
  3. Unikalność elementów:

    • Array: Może zawierać duplikaty.
    • Set: Zawiera tylko unikalne elementy.
    • Dictionary: Klucze muszą być unikalne, wartości mogą się powtarzać.
  4. Wydajność:

    • Dostęp przez indeks w Array jest zwykle szybszy (średnio O(1)).
    • Wyszukiwanie elementu w Set lub po kluczu w Dictionary jest zwykle szybsze (średnio O(1)) w porównaniu do wyszukiwania w Array (O(n)).

Przykład użycia Array:

// Tworzenie tablicy stringów
var names: [String] = ["Alice", "Bob", "Charlie"]

// Dostęp do elementu przez indeks
let firstPerson = names[0] // "Alice"

// Dodanie elementu
names.append("David") // ["Alice", "Bob", "Charlie", "David"]

Przykład użycia Set:

// Tworzenie zbioru liczb całkowitych
var uniqueNumbers: Set<Int> = [1, 2, 3, 3, 4] // {1, 2, 3, 4} - duplikat usunięty

// Sprawdzenie, czy zawiera element
let containsThree = uniqueNumbers.contains(3) // true

Przykład użycia Dictionary:

// Tworzenie słownika "imię - wiek"
var ages: [String: Int] = ["Alice": 30, "Bob": 25]

// Dostęp do wartości przez klucz
let aliceAge = ages["Alice"] // 30

// Dodanie nowej pary
ages["Charlie"] = 35 // ["Alice": 30, "Bob": 25, "Charlie": 35]