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:
-
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".
-
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íč.
-
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.
-
Výkon:
- Přístup podle indexu v
Arrayje obvykle rychlejší (průměrně O(1)). - Vyhledávání prvku v
Setnebo podle klíče vDictionaryje obvykle rychlejší (průměrně O(1)) ve srovnání s vyhledáváním vArray(O(n)).
- Přístup podle indexu v
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]