Sobes.tech
Junior

რა განსხვავებაა კოლექციებსა და მასივებს შორის?

sobes.tech AI

პასუხი AI-სგან

Swift-те «коллекция» деген жеке түр жок. Бар Collection протоколу, ага ылайык келген ар түрдүү түрлөр бар, анын ичинде Array, Set жана Dictionary.

Array жана башка Collection протоколуна ылайык келген түрлөрдүн негизги айырмачылыктары:

  1. Элементтердин тартиби:

    • Array: тартиптүү коллекция. Элементтер белгилүү бир тартипте сакталат жана индекс аркылуу жеткиликтүү.
    • Set: тартипсиз уникалдуу элементтердин коллекциясы.
    • Dictionary: тартипсиз «ключ-баа» парларынын коллекциясы.
  2. Индекстер аркылуу жетүү:

    • Array: элементтерге бүтүн сандык индекс аркылуу жетүүгө болот.
    • Set: индекстер аркылуу түз жетүү мүмкүн эмес.
    • Dictionary: мааниге ключ аркылуу жетүү.
  3. Элементтердин уникалдуулугу:

    • Array: кайталаган элементтер болушу мүмкүн.
    • Set: гана уникалдуу элементтерди камтыйт.
    • Dictionary: ключтер уникалдуу болушу керек, маанилер кайталашы мүмкүн.
  4. Иштөө ылдамдыгы:

    • Array ичинде индекс аркылуу жетүү көбүнчө тезирек (O(1) орто эсеп менен).
    • Set же Dictionary ичинде элементти издөө көбүнчө тезирек (O(1) орто эсеп менен) — Array менен салыштырганда (O(n)).

Array колдонуу мисалы:

// Строкалардын массивин түзүү
var names: [String] = ["Alice", "Bob", "Charlie"]

// Индекс аркылуу элементке жетүү
let firstPerson = names[0] // "Alice"

// Элемент кошуу
names.append("David") // ["Alice", "Bob", "Charlie", "David"]

Set колдонуу мисалы:

// Бүтүн сандарды топтоо
var uniqueNumbers: Set<Int> = [1, 2, 3, 3, 4] // {1, 2, 3, 4} - кайталагандар алынып салынды

// Элемент бар-жогун текшерүү
let containsThree = uniqueNumbers.contains(3) // true

Dictionary колдонуу мисалы:

// "аты - жашы" деген сөздүк түзүү
var ages: [String: Int] = ["Alice": 30, "Bob": 25]

// Ключ аркылуу мааниге жетүү
let aliceAge = ages["Alice"] // 30

// Жаңы парду кошуу
ages["Charlie"] = 35 // ["Alice": 30, "Bob": 25, "Charlie": 35]