Junior
Kuo skiriasi kolekcijos nuo masyvų?
sobes.tech AI
Atsakymas iš AI
Swift nėra atskiro „kolekcijos“ tipo. Yra Collection protokolas, kuriam atitinka įvairūs tipai, įskaitant Array, Set ir Dictionary.
Pagrindiniai skirtumai tarp Array ir kitų Collection protokolui atitinkančių tipų:
-
Elementų tvarka:
Array: tvarkinga kolekcija. Elementai saugomi tam tikroje tvarko ir prieinami pagal indeksą.Set: netvarkinga unikalių elementų kolekcija.Dictionary: netvarkinga porų „raktas-vertė“ kolekcija.
-
Prieiga pagal indeksą:
Array: palaiko prieigą prie elementų pagal sveikąjį indeksą.Set: tiesioginė prieiga pagal indeksą nepalaikoma.Dictionary: prieiga prie reikšmių vykdoma pagal raktą.
-
Elementų unikalumas:
Array: gali turėti pasikartojančius elementus.Set: turi tik unikalius elementus.Dictionary: raktai turi būti unikalūs, reikšmės gali kartotis.
-
Našumas:
Arrayprieiga pagal indeksą dažniausiai yra greitesnė (vidutiniškai O(1)).- Paieška
SetarDictionarydažniausiai yra greitesnė (vidutiniškai O(1)) nei paieškaArray(O(n)).
Pavyzdys naudojant Array:
// Sukuriamas eilės masyvas
var names: [String] = ["Alice", "Bob", "Charlie"]
// Prieiga prie elemento pagal indeksą
let firstPerson = names[0] // "Alice"
// Elemento pridėjimas
names.append("David") // ["Alice", "Bob", "Charlie", "David"]
Pavyzdys naudojant Set:
// Sukuriamas sveikųjų skaičių rinkinys
var uniqueNumbers: Set<Int> = [1, 2, 3, 3, 4] // {1, 2, 3, 4} - pasikartojimai pašalinti
// Patikrinama, ar yra elementas
let containsThree = uniqueNumbers.contains(3) // true
Pavyzdys naudojant Dictionary:
// Sukuriamas žodynas „vardas - amžius“
var ages: [String: Int] = ["Alice": 30, "Bob": 25]
// Prieiga prie reikšmės pagal raktą
let aliceAge = ages["Alice"] // 30
// Pridedama nauja pora
ages["Charlie"] = 35 // ["Alice": 30, "Bob": 25, "Charlie": 35]