Menu
CoddyTech

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 sein

Alle 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 Alice

Remove() 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 leer

Ermittle 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: 2
challenge icon

Aufgabe

Mittel

Erstelle eine Methode namens ProcessDictionary, die ein Dictionary<string, int> als Argument entgegennimmt und die folgenden Operationen ausführt:

  1. Gib Keys: aus, gefolgt von allen Schlüsseln (einer pro Zeile)
  2. Gib Values: aus, gefolgt von allen Werten (einer pro Zeile)
  3. Prüfe, ob das Wörterbuch den Schlüssel "total" enthält, und gib Contains 'total': True oder Contains 'total': False aus
  4. Entferne den Schlüssel "temp", falls er vorhanden ist
  5. Gib Count: aus, gefolgt von der Anzahl der Elemente im Wörterbuch nach diesen Operationen (verwende die Eigenschaft .Count des 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}");
            }
        }
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-C#-Compiler