Junior
Фарқи байни ҷамъоварӣ ва массивҳо чист?
sobes.tech AI
Ҷавоб аз AI
Дар Swift, намуде махсуси "коллексия" вуҷуд надорад. Протокол Collection мавҷуд аст, ки ба он намудҳои гуногун, аз ҷумла Array, Set ва Dictionary мувофиқат мекунанд.
Тафовутҳои асосӣ байни Array ва намудҳои дигар, ки протоколи Collection-ро иҷро мекунанд:
-
Тартиби элементҳо:
Array: Коллексияи тартибдодашуда. Элементҳо дар тартиби муайян нигоҳ дошта мешаванд ва ба онҳо тавассути индекс дастрасӣ мешавад.Set: Коллексияи бе тартиб ва бо унсурҳои беназм, ки танҳо як бор дар он ҳастанд.Dictionary: Коллексияи бе тартиб, ки дар он ҷуфтҳои "калид-арзиш" нигоҳ дошта мешаванд.
-
Дастрасӣ тавассути индекс:
Array: Дастрасӣ ба элементҳо тавассути индексҳои пурра имконпазир.Set: Дастрасӣ ба элементҳо тавассути индекс мустақим дастгирӣ намешавад.Dictionary: Дастрасӣ ба арзишҳо тавассути калидҳо сурат мегирад.
-
Ягонагии элементҳо:
Array: Мумкин аст, ки элементҳои такроршаванда дошта бошад.Set: Танҳо унсурҳои беназмро дорад.Dictionary: Калидҳо бояд беназм бошанд, арзишҳо метавонанд такрор шаванд.
-
Камаронӣ:
- Дастрасӣ тавассути индекс дар
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]