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

  1. 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.
  2. 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.
  3. 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.
  4. Veiktspēja:

    • Array piekļuve pēc indeksa parasti ir ātrāka (vidēji O(1)).
    • Meklēšana Set vai Dictionary parasti ir ātrāka (vidēji O(1)) nekā meklēšana Array (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]