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]