Iteration über Mengen
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 66 von 66.
Das Iterieren über eine HashSet ermöglicht den Zugriff auf jedes Element in der Menge. In C# können Sie verschiedene Ansätze verwenden, um durch eine HashSet zu iterieren.
Verwendung einer foreach-Schleife:
// Erstelle ein HashSet
HashSet<string> colors = new HashSet<string>();
// Füge Elemente zum HashSet hinzu
colors.Add("Red");
colors.Add("Green");
colors.Add("Blue");
// Iteriere durch das HashSet
foreach (string color in colors)
{
Console.WriteLine(color);
}
Denke daran, dass HashSet die Einfügereihenfolge nicht beibehält, sodass Elemente möglicherweise nicht in derselben Reihenfolge durchlaufen werden, in der sie hinzugefügt wurden.
Sie können es auch zuerst in ein Array oder eine Liste konvertieren:
// Zu einem Array konvertieren und iterieren
string[] colorArray = colors.ToArray();
for (int i = 0; i < colorArray.Length; i++)
{
Console.WriteLine(colorArray[i]);
}
Aufgabe
EinfachErstelle eine Methode namens PrintSetElements, die ein HashSet von Ganzzahlen als Eingabe entgegennimmt. Die Methode sollte das Set durchlaufen und jedes Element in einer neuen Zeile ausgeben.
Wenn das Set beispielsweise [5, 2, 8] enthält, sollte deine Methode Folgendes ausgeben:
5 2 8
Probier es selbst
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
public static void PrintSetElements(HashSet<int> set)
{
// Schreibe deinen Code hier
}
static void Main(string[] args)
{
HashSet<int> numbers = new HashSet<int>();
// Read first line to check format
string firstLine = Console.ReadLine();
// Check if input is in JSON array format
if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
{
try
{
// Extract content between square brackets
string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
// Try to parse the JSON array content
string[] values = Regex.Split(arrayContent, @",\s*");
foreach (string value in values)
{
// Remove any quotes if present
string cleanValue = value.Trim();
if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
{
cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
}
// Parse as integer and add to set
if (int.TryParse(cleanValue, out int num))
{
numbers.Add(num);
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing JSON input: {ex.Message}");
return;
}
}
else
{
try
{
// Traditional format - read count then elements
int count = int.Parse(firstLine);
// Read each element and add to the set
for (int i = 0; i < count; i++)
{
int num = int.Parse(Console.ReadLine());
numbers.Add(num);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing traditional input: {ex.Message}");
return;
}
}
PrintSetElements(numbers);
}
}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 Operatoren2Fortgeschrittene 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 – Nullsicherheit9HashMap Teil 1
Was ist eine HashMap?Eine HashMap deklarierenPrüfen, ob ein Schlüssel vorhanden istAuf Werte zugreifenDictionaries ändernZusammenfassung – HashMap12HashSet Teil 2
Mathematik – Vereinigung von HashSetsMathematik – Schnittmenge von HashSetMathematik – MengendifferenzMathematik – Symmetrische DifferenzIteration über MengenÜbe selbstständig: Online-C#-Compiler