C# Programming

إتقان خرائط التجزئة في C# باستخدام القاموس

Spread the love

لا توفر لغة C# فئة تسمى “HashMap” مباشرةً، على عكس Java. ومع ذلك، توفر فئتها Dictionary<TKey, TValue> وظائف مكافئة وهي النهج الموصى به لعمليات خريطة التجزئة.

محتويات الجدول

استخدام Dictionary<TKey, TValue> كخريطة تجزئة

يوفر Dictionary<TKey, TValue> مخزنًا مفتاح-قيمة بمتوسط تعقيد زمني قدره O(1) للعمليات الشائعة مثل الإدراج والحذف والاسترجاع. يحدد TKey نوع المفتاح، ويحدد TValue نوع القيمة المرتبطة. دعونا نستكشف استخدامه:

إنشاء وتعبئة قاموس:


// إنشاء قاموس لتخزين السلاسل ك مفاتيح والأعداد الصحيحة كقيم.
Dictionary<string, int> myDictionary = new Dictionary<string, int>();

// إضافة أزواج المفتاح-القيمة باستخدام Add()
myDictionary.Add("apple", 1);
myDictionary.Add("banana", 2);
myDictionary.Add("cherry", 3);

// أو استخدام بناء جملة مُهيئ المجموعة:
Dictionary<string, int> anotherDictionary = new Dictionary<string, int>()
{
    {"grape", 4},
    {"orange", 5}
};

الوصول إلى القيم:

استرجاع القيم باستخدام مفاتيحها. TryGetValue() أكثر أمانًا من الفهرسة المباشرة، حيث تتعامل مع الحالات التي يكون فيها المفتاح غائبًا:


int appleCount;
if (myDictionary.TryGetValue("apple", out appleCount))
{
    Console.WriteLine($"عدد التفاح: {appleCount}"); // الإخراج: عدد التفاح: 1
}
else
{
    Console.WriteLine("لم يتم العثور على التفاح.");
}

// الوصول المباشر (يلقي KeyNotFoundException إذا كان المفتاح مفقودًا)
try
{
    Console.WriteLine($"عدد الموز: {myDictionary["banana"]}"); // الإخراج: عدد الموز: 2
}
catch (KeyNotFoundException)
{
    Console.WriteLine("لم يتم العثور على المفتاح.");
}

التكرار عبر قاموس:


Console.WriteLine("محتويات القاموس:");
foreach (KeyValuePair<string, int> kvp in myDictionary)
{
    Console.WriteLine($"المفتاح: {kvp.Key}, القيمة: {kvp.Value}");
}

إزالة العناصر:


myDictionary.Remove("banana"); 

التحقق من وجود المفتاح:


if (myDictionary.ContainsKey("cherry"))
{
    Console.WriteLine("الكرز موجود.");
}

الاستخدام المتقدم والاعتبارات

في الحالات التي تتطلب سلامة الخيوط، ضع في اعتبارك ConcurrentDictionary<TKey, TValue>. عند اختيار المفاتيح، تأكد من أنها تُنفذ GetHashCode() و Equals() بشكل صحيح لتجنب التصادمات والحفاظ على كفاءة خريطة التجزئة. إن فهم هذه الجوانب أمر بالغ الأهمية لتحقيق الأداء الأمثل.

الخلاصة

Dictionary<TKey, TValue> في C# هو المكافئ الفعال لـ HashMap، حيث يوفر أداءً ممتازًا لتخزين المفتاح-القيمة. تجعله تنوعه، بالإضافة إلى توفر بدائل آمنة للخيوط، بنية بيانات أساسية لتطبيقات C# المتنوعة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *