Junior
Kāda ir atšķirība starp kolekcijām un masīviem?
sobes.tech AI
Atbilde no AI
Swift nav atsevišķa „kolekcijas“ veida. Pastāv Collection protokols, kam atbilst dažādi tipi, ieskaitot Array, Set un Dictionary.
Galvenās atšķirības starp Array un citiem Collection protokolam atbilstošiem tipiem:
-
Elementu kārtība:
Array: kārtota kolekcija. Elementi tiek glabāti noteiktā kārtībā un ir pieejami pēc indeksa.Set: ne-kārtota unikālu elementu kolekcija.Dictionary: ne-kārtota pāru „atslēga-vērtība” kolekcija.
-
Piekļuve pēc indeksa:
Array: atbalsta piekļuvi elementiem pēc vesela skaitļa indeksa.Set: tieša piekļuve pēc indeksa nav atbalstīta.Dictionary: piekļuve vērtībām tiek veikta pēc atslēgas.
-
Elementu unikālitāte:
Array: var saturēt atkārtotus elementus.Set: satur tikai unikālus elementus.Dictionary: atslēgas ir jābūt unikālām, vērtības var atkārtoties.
-
Veiktspēja:
Arraypiekļuve pēc indeksa parasti ir ātrāka (vidēji O(1)).- Meklēšana
SetvaiDictionaryparasti ir ātrāka (vidēji O(1)) nekā meklēšanaArray(O(n)).
Piemērs ar Array:
// Izveidojam virkņu masīvu
var names: [String] = ["Alice", "Bob", "Charlie"]
// Piekļuve elementam pēc indeksa
let firstPerson = names[0] // "Alice"
// Elementa pievienošana
names.append("David") // ["Alice", "Bob", "Charlie", "David"]
Piemērs ar Set:
// Izveidojam veselu skaitļu kopu
var uniqueNumbers: Set<Int> = [1, 2, 3, 3, 4] // {1, 2, 3, 4} - atkārtojumi ir izņemti
// Pārbaude, vai ir elements
let containsThree = uniqueNumbers.contains(3) // true
Piemērs ar Dictionary:
// Izveidojam vārdnīcu „vārds - vecums“
var ages: [String: Int] = ["Alice": 30, "Bob": 25]
// Piekļuve vērtībai pēc atslēgas
let aliceAge = ages["Alice"] // 30
// Pievienojam jaunu pāri
ages["Charlie"] = 35 // ["Alice": 30, "Bob": 25, "Charlie": 35]