Iterating Over Sets
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:
// Create a HashSet
HashSet<string> colors = new HashSet<string>();
// Add elements to the HashSet
colors.Add("Red");
colors.Add("Green");
colors.Add("Blue");
// Iterate through the HashSet
foreach (string color in colors)
{
Console.WriteLine(color);
}
Beachten Sie, dass HashSet die Einfügereihenfolge nicht beibehält, sodass Elemente möglicherweise nicht in der gleichen 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
EinfachErstellen Sie eine Methode namens PrintSetElements, die einen HashSet von Ganzzahlen als Eingabe nimmt. Die Methode sollte durch den Set iterieren und jedes Element in einer neuen Zeile ausgeben.
Zum Beispiel, wenn der Set [5, 2, 8] enthält, sollte Ihre Methode ausgeben:
5 2 8
Spickzettel
Um über ein HashSet in C# zu iterieren, verwenden Sie eine foreach-Schleife:
HashSet<string> colors = new HashSet<string>();
colors.Add("Red");
colors.Add("Green");
colors.Add("Blue");
foreach (string color in colors)
{
Console.WriteLine(color);
}
HashSet behält die Einfügereihenfolge nicht bei, daher können Elemente möglicherweise nicht in der Reihenfolge iteriert werden, in der sie hinzugefügt wurden.
Sie können es auch zuerst in ein Array umwandeln:
string[] colorArray = colors.ToArray();
for (int i = 0; i < colorArray.Length; i++)
{
Console.WriteLine(colorArray[i]);
}
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
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety9HashMap Part 1
What is a HashMap?Declare a HashMapCheck If Key ExistsAccessing ValuesModifying DictionariesRecap - HashMap12HashSet Part 2
Math - Union of HashSetsMath - Intersection of HashSetMath - Set DifferenceMath - Symmetric DifferenceIterating Over Sets