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]