מתודות של 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");
// Dictionary מכיל כעת רק את הניקוד של 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);
// פלט: 2אתגר
בינוניצור מתודה בשם ProcessDictionary שמקבלת Dictionary<string, int> כארגומנט ומבצעת את הפעולות הבאות:
- הדפס
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)
{
// כתבו את הקוד שלכם כאן
}
// התעלמו מהקוד הראשי, הוא ממיר מחרוזת ל-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מערכים רב־ממדיים
יסודות מערכים דו־ממדייםהכרזה ואתחול של מערכים דו־ממדייםגישה לאיברי מערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםמערכים משונניםפעולות מטריצה נפוצותחזרה – מערכים רב־ממדיים7אופרטורים לוגיים מתקדמים
הערכה בקיצור דרךאופרטורים לוגיים מותניםקדימות אופרטוריםסיכום – אופרטורים מתקדמים2קבלת החלטות מתקדמת
תנאים מרוביםלוגיקה בוליאנית מורכבתהשוואה בין If ל-Switchהצהרות Switch מקוננותסיכום — קבלת החלטות מתקדמת5טיפול בחריגות
יסודות try-catchסוגי חריגותבלוקי catch מרוביםעבודה עם קבציםבלוק finallyשימוש ב-using לעומת try-finallyחריגות מותאמות אישיתסיכום – טיפול בשגיאות3שיפורים בלולאות
ביצועי לולאותאיטרציה במבנים מורכביםכל אחד מסוגי הלולאותרפקטורינג של לולאותסיכום – לולאות שעברו אופטימיזציה6טיפול בערכי Null
יסודות הפניה ל-Nullטיפוסי ערכים שניתנים ל-Nullדפוסי בדיקת Nullתכנות הגנתיסיכום – בטיחות מול Nullתרגלו בעצמכם: קומפיילר C# אונליין