0Pricing
C# Academy · درس

HashSet<T> وSortedSet<T> وQueue<T> وStack<T>

افهم الفرق بين المجموعات ذات العناصر الفريدة والمجموعات المرتبة، وبين مجموعات FIFO/LIFO؛ وتدرّب على Add/Contains وEnqueue/Dequeue وPush/Pop.

HashSet<T> وSortedSet<T> وQueue<T> وStack<T> درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.

أشكال المجموعات

الهدف: اختر المجموعة المناسبة.

  • HashSet<T>: قيم فريدة، وبحث سريع
  • SortedSet<T>: قيم فريدة ومرتبة
  • Queue<T>: الوارد أولاً يصرف أولاً (FIFO)
  • Stack<T>: الوارد أخيراً يصرف أولاً (LIFO)

أساسيات HashSet

يحافظ HashSet<T> على القيم الفريدة؛ ويعيد Add القيمة false عند التكرار؛ ويكون Contains سريعاً.

using System;
using System.Collections.Generic;

public class Program
{
  public static void Main(string[] args)
  {
    HashSet<string> tags = new HashSet<string>();
    bool a1 = tags.Add("red");   // true
    bool a2 = tags.Add("blue");  // true
    bool a3 = tags.Add("red");   // false (duplicate ignored)

    Console.WriteLine("Has red? " + tags.Contains("red"));
    Console.WriteLine("Count = " + tags.Count); // 2
  }
}

أساسيات SortedSet

يحافظ SortedSet<T> على العناصر فريدة ومرتبة أثناء إضافتها.

using System;
using System.Collections.Generic;

public class Program
{
  public static void Main(string[] args)
  {
    SortedSet<int> scores = new SortedSet<int>();
    scores.Add(30);
    scores.Add(10);
    scores.Add(20);
    scores.Add(20); // duplicate ignored

    foreach (int s in scores)
    {
      Console.WriteLine(s); // 10, 20, 30 (sorted ascending)
    }

    Console.WriteLine("Min = " + (scores.Count > 0 ? scores.Min : 0));
    Console.WriteLine("Max = " + (scores.Count > 0 ? scores.Max : 0));
  }
}

قائمة الانتظار (FIFO)

تعمل Queue<T> وفق مبدأ FIFO: Enqueue ← Dequeue. استخدم Peek للاطلاع على العنصر من دون إزالته.

using System;
using System.Collections.Generic;

public class Program
{
  public static void Main(string[] args)
  {
    Queue<string> q = new Queue<string>();
    q.Enqueue("A");
    q.Enqueue("B");
    q.Enqueue("C");

    Console.WriteLine("Peek = " + q.Peek()); // A
    Console.WriteLine(q.Dequeue());          // A
    Console.WriteLine(q.Dequeue());          // B
    Console.WriteLine("Count = " + q.Count); // 1
  }
}

المكدس (LIFO)

يعمل Stack<T> وفق مبدأ LIFO: Push ← Pop. يفحص Peek العنصر الموجود في القمة.

using System;
using System.Collections.Generic;

public class Program
{
  public static void Main(string[] args)
  {
    Stack<int> st = new Stack<int>();
    st.Push(1);
    st.Push(2);
    st.Push(3);

    Console.WriteLine("Peek = " + st.Peek()); // 3
    Console.WriteLine(st.Pop());              // 3
    Console.WriteLine(st.Pop());              // 2
    Console.WriteLine("Count = " + st.Count); // 1
  }
}

نصائح الاختيار

ورقة غش:

  • تحتاج إلى الفريدة والبحث السريع ← HashSet<T>
  • تحتاج إلى الفريدة والترتيب ← SortedSet<T>
  • المعالجة حسب ترتيب الوصول ← Queue<T> (FIFO)
  • معالجة الأحدث وصولاً أولاً ← Stack<T> (LIFO)

اختيار المجموعة

تحقق سريع: أي مجموعة تضمن عناصر فريدة وتوفّر عمليات بحث سريعة بالمتوسط حسب القيمة؟

مراجعة

مراجعة: استخدم المجموعات لضمان الفريدة (HashSet وSortedSet)، واختر FIFO (Queue) أو LIFO (Stack) للمعالجة المرتبة.

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

هل درس «HashSet<T> وSortedSet<T> وQueue<T> وStack<T>» مجاني؟

نعم — نص درس «HashSet<T> وSortedSet<T> وQueue<T> وStack<T>» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.

ماذا ستتعلم في «HashSet<T> وSortedSet<T> وQueue<T> وStack<T>»؟

افهم الفرق بين المجموعات ذات العناصر الفريدة والمجموعات المرتبة، وبين مجموعات FIFO/LIFO؛ وتدرّب على Add/Contains وEnqueue/Dequeue وPush/Pop. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

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

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

كم من الوقت يستغرق درس «HashSet<T> وSortedSet<T> وQueue<T> وStack<T>»؟

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

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

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

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

  1. HashSet وSortedSet وQueue وStack
  2. ConcurrentDictionary والمجموعات غير القابلة للتغيير
  3. المساواة والتجزئة (القيمة مقابل المرجع)
← العودة إلى C# Academy