Sobes.tech
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ų:

  1. 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.
  2. 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ą.
  3. 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.
  4. Našumas:

    • Array prieiga pagal indeksą dažniausiai yra greitesnė (vidutiniškai O(1)).
    • Paieška Set ar Dictionary dažniausiai yra greitesnė (vidutiniškai O(1)) nei paieška Array (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]