HashMap-Methoden
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 52 von 66.
HashMap-Methoden bieten leistungsstarke Möglichkeiten, mit deinen Wörterbuchdaten zu arbeiten. Sehen wir uns einige gängige Methoden an:
Prüfe, ob ein Schlüssel im Dictionary vorhanden ist:
Dictionary<string, int> inventory = new Dictionary<string, int>();
inventory.Add("apples", 25);
bool hasApples = inventory.ContainsKey("apples");
// hasApples wird true seinAlle Schlüssel aus dem Wörterbuch abrufen:
Dictionary<string, int> scores = new Dictionary<string, int>();
scores.Add("Alice", 95);
scores.Add("Bob", 87);
// Alle Schlüssel abrufen
Dictionary<string, int>.KeyCollection keys = scores.Keys;
foreach (string name in keys)
{
Console.WriteLine(name);
}Alle Werte aus dem Wörterbuch abrufen:
// Alle Werte abrufen
Dictionary<string, int>.ValueCollection values = scores.Values;
foreach (int score in values)
{
Console.WriteLine(score);
}Ein Element aus dem Wörterbuch entfernen:
scores.Remove("Bob");
// Dictionary enthält jetzt nur noch den Punktestand von AliceRemove() gibt true zurück, wenn der Schlüssel vorhanden war und entfernt wurde, und false, wenn er nicht vorhanden war. Das Entfernen eines nicht vorhandenen Schlüssels ist kein Fehler.
Alle Elemente löschen:
scores.Clear();
// Dictionary ist jetzt leerErmittle die Anzahl der Elemente im Wörterbuch mithilfe von .Count:
Dictionary<string, int> scores = new Dictionary<string, int>();
scores.Add("Alice", 95);
scores.Add("Bob", 87);
int total = scores.Count;
Console.WriteLine(total);
// Ausgabe: 2Aufgabe
MittelErstelle eine Methode namens ProcessDictionary, die ein Dictionary<string, int> als Argument entgegennimmt und die folgenden Operationen ausführt:
- Gib
Keys:aus, gefolgt von allen Schlüsseln (einer pro Zeile) - Gib
Values:aus, gefolgt von allen Werten (einer pro Zeile) - Prüfe, ob das Wörterbuch den Schlüssel
"total"enthält, und gibContains 'total': TrueoderContains 'total': Falseaus - Entferne den Schlüssel
"temp", falls er vorhanden ist - Gib
Count:aus, gefolgt von der Anzahl der Elemente im Wörterbuch nach diesen Operationen (verwende die Eigenschaft.Countdes Wörterbuchs)
Probier es selbst
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
static void ProcessDictionary(Dictionary<string, int> dict)
{
// Schreibe deinen Code hier
}
// Ignoriere den Hauptcode, er wandelt einen String in eine HashMap um
static void Main(string[] args)
{
Dictionary<string, int> inputDict = new Dictionary<string, int>();
// Lies die erste Zeile, um zu prüfen, ob sie im JSON-Format vorliegt
string firstLine = Console.ReadLine();
// Prüfe, ob die Eingabe im JSON-Format vorliegt
if (firstLine != null && firstLine.StartsWith("{") && firstLine.EndsWith("}"))
{
try
{
// Verarbeite die JSON-Eingabe
string jsonContent = firstLine.Substring(1, firstLine.Length - 2);
// Teile an Kommas auf, die nicht innerhalb von Anführungszeichen stehen
string pattern = @",(?=(?:[^""]*""[^""]*"")*[^""]*$)";
string[] entries = Regex.Split(jsonContent, pattern);
foreach (string entry in entries)
{
// Extrahiere Schlüssel und Wert mithilfe eines regulären Ausdrucks
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}");
}
}
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Mehrdimensionale Arrays
Grundlagen 2D-Arrays2D-Arrays deklarieren und initialisierenAuf Elemente von 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysGezackte ArraysHäufige MatrixoperationenZusammenfassung – Mehrdimensionale Arrays4Techniken zur Ablaufsteuerung
Frühe RückgabenWächterklauselnSprunganweisungen (goto)Break und ContinueVerschachtelte Bedingungen abflachen7Logische Operatoren – Fortgeschritten
KurzschlussauswertungBedingte logische OperatorenOperatorrangfolgeRückblick – Erweiterte Operatoren10HashMap Teil 2
HashMap-MethodenVerschachtelte HashMapWiederholung – Lager verwaltenWiederholung – HashMap-Operationen2Fortgeschrittene Entscheidungslogik
Mehrere BedingungenKomplexe boolesche LogikVergleich: If vs. SwitchVerschachtelte Switch-AnweisungenRückblick – Fortgeschrittene Entscheidungen5Fehlerbehandlung mit Exceptions
Grundlagen von Try-CatchException-TypenMehrere Catch-BlöckeArbeiten mit DateienFinally-BlockUsing im Vergleich zu Try-FinallyBenutzerdefinierte ExceptionsZusammenfassung – Fehlerbehandlung3Schleifenverbesserungen
SchleifenleistungKomplexe IterationJeder SchleifentypSchleifen refaktorierenRückblick – Optimierte Schleifen6Behandlung von Nullwerten
Grundlagen von NullreferenzenNullable WerttypenMuster zur NullprüfungDefensive ProgrammierungZusammenfassung – NullsicherheitÜbe selbstständig: Online-C#-Compiler