Sobes.tech
Junior

Jaký je rozdíl mezi kolekcemi a poli?

sobes.tech AI

Odpověď od AI

V jazyce Swift neexistuje samostatný typ "kolekce". Existuje protokol Collection, kterému odpovídají různé typy, včetně Array, Set a Dictionary.

Hlavní rozdíly mezi Array a dalšími typy, které splňují protokol Collection:

  1. Pořadí prvků:

    • Array: Uspořádaná kolekce. Prvky jsou uloženy v určitém pořadí a jsou přístupné pomocí indexu.
    • Set: Neuspořádaná kolekce unikátních prvků.
    • Dictionary: Neuspořádaná kolekce párů "klíč-hodnota".
  2. Přístup podle indexu:

    • Array: Podporuje přístup k prvkům pomocí celého čísla indexu.
    • Set: Nepodporuje přímý přístup podle indexu.
    • Dictionary: Přístup k hodnotám je přes klíč.
  3. Unikátnost prvků:

    • Array: Může obsahovat duplicitní prvky.
    • Set: Obsahuje pouze unikátní prvky.
    • Dictionary: Klíče musí být unikátní, hodnoty se mohou opakovat.
  4. Výkon:

    • Přístup podle indexu v Array je obvykle rychlejší (průměrně O(1)).
    • Vyhledávání prvku v Set nebo podle klíče v Dictionary je obvykle rychlejší (průměrně O(1)) ve srovnání s vyhledáváním v Array (O(n)).

Příklad použití Array:

// Vytvoření pole řetězců
var names: [String] = ["Alice", "Bob", "Charlie"]

// Přístup k prvku podle indexu
let firstPerson = names[0] // "Alice"

// Přidání prvku
names.append("David") // ["Alice", "Bob", "Charlie", "David"]

Příklad použití Set:

// Vytvoření množiny celých čísel
var uniqueNumbers: Set<Int> = [1, 2, 3, 3, 4] // {1, 2, 3, 4} - duplicitní prvek odstraněn

// Kontrola, zda obsahuje prvek
let containsThree = uniqueNumbers.contains(3) // true

Příklad použití Dictionary:

// Vytvoření slovníku "jméno - věk"
var ages: [String: Int] = ["Alice": 30, "Bob": 25]

// Přístup ke hodnotě podle klíče
let aliceAge = ages["Alice"] // 30

// Přidání nového páru
ages["Charlie"] = 35 // ["Alice": 30, "Bob": 25, "Charlie": 35]