0Pricing
Swift Academy · درس

الاختيار بين Array وDictionary وSet

افهم خصائص الأداء واختر نوع المجموعة المناسب لكل سيناريو

الاختيار بين Array وDictionary وSet درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

مرحبًا

لكل واحدة من مجموعات Swift الثلاث المضمّنة — Array وDictionary وSet — نقاط قوة مختلفة. ويؤثر اختيار المجموعة المناسبة في الصحة والأداء معًا.

Array: تسلسلات مرتبة

استخدموا `Array` عندما: • يكون الترتيب مهمًا • تحتاجون إلى الوصول العشوائي بالفهرس بتعقيد `O(1)` • يُسمح بالتكرارات • تكرّرون على العناصر بالتسلسل ```swift let steps = ["boil","add tea","steep","drink"] ```

Dictionary: البحث بالمفتاح والقيمة

استخدموا `Dictionary` عندما: • تحتاجون إلى بحث بتعقيد O(1) باستخدام مفتاح فريد • تكون البيانات مرتبطة طبيعيًا بالمفاتيح، مثل معرّف المستخدم أو مفتاح الإعدادات ```swift var userNames: [Int: String] = [42: "Alice", 7: "Bob"] print(userNames[42]!) // "Alice" ```

Set: عضوية فريدة

استخدموا `Set` عندما: • تحتاجون إلى اختبار عضوية بتعقيد O(1) • يجب استبعاد التكرارات • لا يكون الترتيب مهمًا ```swift var visitedPages: Set = [] visitedPages.insert("/home") print(visitedPages.contains("/home")) // true ```

ملخص الأداء

| العملية | Array | Dictionary | Set | |---------------------|-------|------------|-------| | الإضافة في النهاية | O(1)* | O(1)* | O(1)* | | الوصول بالفهرس/المفتاح | O(1) | O(1)* | — | | البحث | O(n) | O(1)* | O(1)* | | الإدراج في المنتصف | O(n) | O(1)* | O(1)* | *متوسط مُطفأ

متى يتفوق Array على Set

غالبًا ما تكون `Array` أفضل من `Set` في المجموعات الصغيرة بسبب انخفاض التكلفة الإضافية: ```swift // For 5 items, Array.contains is perfectly fast: let tags = ["swift","ios","mobile"] if tags.contains("swift") { ... } ``` قد تطغى التكلفة الثابتة للتجزئة على الأداء في المجموعات الصغيرة جدًا.

نمط القاموس المرتب

عندما تحتاجون إلى البحث بالمفتاح **وترتيب الإدراج**: ```swift // Use an array of tuples or a struct: var ordered: [(key: String, value: Int)] = [] // Or Foundation's NSOrderedDictionary // Or maintain a [Key] array alongside a [Key:Value] dict ```

نمط multiset

لتمثيل التكرارات المعدودة (multiset)، استخدموا `[T: Int]`: ```swift var frequency: [String: Int] = [:] for word in words { frequency[word, default: 0] += 1 } ```

عدم القابلية للتغيير: let مقابل var

تستفيد المجموعات الثلاث من استخدام `let` لتحقيق عدم القابلية للتغيير: ```swift let config: [String: String] = ["env": "prod"] let primes: Set = [2,3,5,7,11] let steps: [String] = ["fetch","parse","display"] ``` تمنع المجموعات غير القابلة للتغيير التغيير غير المقصود، كما تتيح تحسينات للمترجم.

شجرة اتخاذ القرار العملية

اسألوا أنفسكم: 1. هل أحتاج إلى الوصول المرتب حسب الموضع؟ ← Array 2. هل أحتاج إلى البحث باستخدام مفتاح فريد؟ ← Dictionary 3. هل أحتاج إلى اختبار عضوية سريع من دون تكرارات؟ ← Set 4. هل أحتاج إلى الجمع بينها؟ ← ركّبوا المجموعات، مثل `[Key: [Value]]` للبيانات المجمّعة

اختبار سريع

أي مجموعة توفّر بحثًا بمتوسط تعقيد O(1) باستخدام مفتاح فريد؟

مراجعة

أهم النقاط: • Array — مرتبة ومفهرسة وتسمح بالتكرارات • Dictionary — أزواج مفتاح-قيمة مع بحث بتعقيد O(1) • Set — قيم فريدة مع اختبار عضوية بتعقيد O(1) • المجموعات الصغيرة: غالبًا ما يتفوق Array على Set بسبب التكلفة الإضافية للتجزئة • ركّبوا المجموعات لتمثيل أشكال البيانات المعقدة اكتملت الدورة! التالي: أنماط تصميم struct.

الأسئلة الشائعة

هل درس «الاختيار بين Array وDictionary وSet» مجاني؟

نعم — نص درس «الاختيار بين Array وDictionary وSet» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «الاختيار بين Array وDictionary وSet»؟

افهم خصائص الأداء واختر نوع المجموعة المناسب لكل سيناريو تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «الاختيار بين Array وDictionary وSet»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. عمليات CRUD على القواميس والوصول عبر Subscript
  2. تكرار القواميس وتحويلها
  3. عمليات Set: الاتحاد والتقاطع والفرق
  4. الاختيار بين Array وDictionary وSet
← العودة إلى Swift Academy