Junior
Aký je rozdiel medzi kolekciami a poliami?
sobes.tech AI
Odpoveď od AI
V jazyku Swift neexistuje samostatný typ "kolekcie". Existuje protokol Collection, ktorému zodpovedajú rôzne typy, vrátane Array, Set a Dictionary.
Hlavné rozdiely medzi Array a ďalšími typmi, ktoré spĺňajú protokol Collection:
-
Poradie prvkov:
Array: Usporiadaná kolekcia. Prvky sú uložené v určitej poradí a sú prístupné pomocou indexu.Set: Neusporiadaná kolekcia jedinečných prvkov.Dictionary: Neusporiadaná kolekcia párov "kľúč-hodnota".
-
Prístup podľa indexu:
Array: Podporuje prístup k prvkom pomocou celého čísla indexu.Set: Nepodporuje priame prístupovanie podľa indexu.Dictionary: Prístup k hodnotám sa vykonáva pomocou kľúča.
-
Jedinečnosť prvkov:
Array: Môže obsahovať duplikáty.Set: Obsahuje iba jedinečné prvky.Dictionary: Kľúče musia byť jedinečné, hodnoty sa môžu opakovať.
-
Výkon:
- Prístup podľa indexu v
Arrayje zvyčajne rýchlejší (priemerne O(1)). - Vyhľadávanie prvku v
Setalebo podľa kľúča vDictionaryje zvyčajne rýchlejšie (priemerne O(1)) v porovnaní s vyhľadávaním vArray(O(n)).
- Prístup podľa indexu v
Príklad použitia Array:
// Vytvorenie poľa reťazcov
var names: [String] = ["Alice", "Bob", "Charlie"]
// Prístup k prvku pomocou indexu
let firstPerson = names[0] // "Alice"
// Pridanie prvku
names.append("David") // ["Alice", "Bob", "Charlie", "David"]
Príklad použitia Set:
// Vytvorenie množiny celých čísel
var uniqueNumbers: Set<Int> = [1, 2, 3, 3, 4] // {1, 2, 3, 4} - duplikát odstránený
// Kontrola, či obsahuje prvok
let containsThree = uniqueNumbers.contains(3) // true
Príklad použitia Dictionary:
// Vytvorenie slovníka "meno - vek"
var ages: [String: Int] = ["Alice": 30, "Bob": 25]
// Prístup k hodnote pomocou kľúča
let aliceAge = ages["Alice"] // 30
// Pridanie novej dvojice
ages["Charlie"] = 35 // ["Alice": 30, "Bob": 25, "Charlie": 35]