دوال HashMap
جزء من قسم المنطق وتدفق التنفيذ في رحلة C# على Coddy. الدرس 52 من 66.
توفر طرق HashMap طرقاً قوية للتعامل مع بيانات القاموس الخاصة بك. دعنا نستكشف بعض الطرق الشائعة:
تحقق مما إذا كان المفتاح موجوداً في القاموس:
Dictionary<string, int> inventory = new Dictionary<string, int>();
inventory.Add("apples", 25);
bool hasApples = inventory.ContainsKey("apples");
// hasApples ستكون trueالحصول على جميع المفاتيح من القاموس:
Dictionary<string, int> scores = new Dictionary<string, int>();
scores.Add("Alice", 95);
scores.Add("Bob", 87);
// الحصول على جميع المفاتيح
Dictionary<string, int>.KeyCollection keys = scores.Keys;
foreach (string name in keys)
{
Console.WriteLine(name);
}الحصول على جميع القيم من القاموس:
// الحصول على جميع القيم
Dictionary<string, int>.ValueCollection values = scores.Values;
foreach (int score in values)
{
Console.WriteLine(score);
}إزالة عنصر من القاموس:
scores.Remove("Bob");
// القاموس يحتوي الآن فقط على درجة Aliceمسح جميع العناصر:
scores.Clear();
// القاموس الآن فارغاحصل على عدد العناصر في القاموس باستخدام .Count:
Dictionary<string, int> scores = new Dictionary<string, int>();
scores.Add("Alice", 95);
scores.Add("Bob", 87);
int total = scores.Count;
Console.WriteLine(total);
// Output: 2التحدي
متوسطأنشئ دالة باسم ProcessDictionary تأخذ Dictionary<string, int> كمعامل (argument) وتنفذ العمليات التالية:
- اطبع
Keys:متبوعة بجميع المفاتيح (مفتاح واحد في كل سطر) - اطبع
Values:متبوعة بجميع القيم (قيمة واحدة في كل سطر) - تحقق مما إذا كان القاموس يحتوي على المفتاح
"total"واطبعContains 'total': TrueأوContains 'total': False - قم بإزالة المفتاح
"temp"إذا كان موجوداً - اطبع
Count:متبوعاً بعدد العناصر في القاموس بعد هذه العمليات (استخدم الخاصية.Countللقاموس)
جرّب بنفسك
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
static void ProcessDictionary(Dictionary<string, int> dict)
{
// اكتب كودك هنا
}
// تجاهل الكود الرئيسي، فهو يقوم بتحويل string إلى HashMap
static void Main(string[] args)
{
Dictionary<string, int> inputDict = new Dictionary<string, int>();
// اقرأ السطر الأول للتحقق مما إذا كان بتنسيق JSON
string firstLine = Console.ReadLine();
// تحقق مما إذا كان الإدخال بتنسيق JSON
if (firstLine != null && firstLine.StartsWith("{") && firstLine.EndsWith("}"))
{
try
{
// معالجة إدخال JSON
string jsonContent = firstLine.Substring(1, firstLine.Length - 2);
// التقسيم بواسطة الفواصل التي ليست داخل علامات الاقتباس
string pattern = @",(?=(?:[^""]*""[^""]*"")*[^""]*$)";
string[] entries = Regex.Split(jsonContent, pattern);
foreach (string entry in entries)
{
// استخراج المفتاح والقيمة باستخدام regex
Match match = Regex.Match(entry, @"""([^""]+)""\s*:\s*(\d+)");
if (match.Success)
{
string keyMatch = match.Groups[1].Value;
int valueMatch = int.Parse(match.Groups[2].Value);
inputDict.Add(keyMatch, valueMatch);
}
}
ProcessDictionary(inputDict);
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing input: {ex.Message}");
}
}
else
{
try
{
// Process traditional input format
int n = int.Parse(firstLine);
for (int i = 0; i < n; i++)
{
string[] pair = Console.ReadLine().Split(':');
string key = pair[0];
int value = int.Parse(pair[1]);
inputDict.Add(key, value);
}
ProcessDictionary(inputDict);
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing input: {ex.Message}");
}
}
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادتعريف وتهيئة المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادالمصفوفات المتعرجة (Jagged Arrays)عمليات المصفوفات الشائعةمراجعة - المصفوفات متعددة الأبعاد4تقنيات التحكم في التدفق
الإرجاع المبكرشروط الحمايةجمل القفز (goto)Break و Continueتسطيح الشروط المتداخلة7المعاملات المنطقية المتقدمة
التقييم المختصرالمعاملات المنطقية الشرطيةأولوية المعاملاتمراجعة - المعاملات المتقدمة2اتخاذ القرارات المتقدم
الشروط المتعددةالمنطق البولياني المعقدمقارنة بين If و Switchجمل Switch المتداخلةمراجعة - القرارات المتقدمة5معالجة الاستثناءات
أساسيات Try-Catchأنواع الاستثناءاتكتل Catch المتعددةالتعامل مع الملفاتكتلة FinallyUsing مقابل Try-Finallyاستثناءات مخصصةمراجعة - معالجة الأخطاء8نظام تحليل البيانات
إعداد جمع البياناتمنطق إدخال البيانات11HashSet الجزء الأول
ما هو الـ HashSet؟إضافة عنصرحذف عنصرالتحقق من وجود عنصرالفراغ والحجمملخص - HashSet3تحسينات الحلقات التكرارية
أداء الحلقات التكراريةالتكرار عبر البيانات المعقدةأنواع الحلقات التكراريةإعادة هيكلة الحلقات التكراريةملخص - الحلقات المحسنة6التعامل مع الـ Null
أساسيات الـ Null Referenceأنواع القيم القابلة للـ Nullأنماط التحقق من الـ Nullالبرمجة الدفاعيةملخص - أمان الـ Nullتدرّب بنفسك: مترجم C# عبر الإنترنت