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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- HashSet وSortedSet وQueue وStack
- ConcurrentDictionary والمجموعات غير القابلة للتغيير
- المساواة والتجزئة (القيمة مقابل المرجع)