Menu
Coddy logo textTech

Iterowanie po zbiorach

Część sekcji Logika i sterowanie przepływem ścieżki C# w Coddy. Lekcja 66 z 66.

Iterowanie po HashSet pozwala uzyskać dostęp do każdego elementu w zbiorze. W C# możesz użyć różnych sposobów, aby iterować po HashSet.

Używanie pętli foreach:

// Utwórz HashSet
HashSet<string> colors = new HashSet<string>();

// Dodaj elementy do HashSet
colors.Add("Red");
colors.Add("Green");
colors.Add("Blue");

// Przejdź przez elementy HashSet
foreach (string color in colors)
{
    Console.WriteLine(color);
}

Pamiętaj, że HashSet nie zachowuje kolejności wstawiania, więc elementy mogą być iterowane w innej kolejności niż ta, w której zostały dodane.

Możesz też najpierw przekonwertować na tablicę lub listę:

// Przekształć w tablicę i przejdź po jej elementach
string[] colorArray = colors.ToArray();
for (int i = 0; i < colorArray.Length; i++)
{
    Console.WriteLine(colorArray[i]);
}
challenge icon

Wyzwanie

Łatwy

Utwórz metodę o nazwie PrintSetElements, która przyjmuje jako dane wejściowe zbiór liczb całkowitych HashSet. Metoda powinna iterować po zbiorze i wypisywać każdy element w nowej linii.

Na przykład, jeśli zbiór zawiera [5, 2, 8], Twoja metoda powinna wypisać:

5 2 8

Spróbuj swoich sił

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

class Program
{
    public static void PrintSetElements(HashSet<int> set)
    {
        // Wpisz tutaj swój kod
    }
    
    static void Main(string[] args)
    {
        HashSet<int> numbers = new HashSet<int>();
        
        // Wczytaj pierwszy wiersz, aby sprawdzić format
        string firstLine = Console.ReadLine();
        
        // Sprawdź, czy dane wejściowe mają format tablicy JSON
        if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
        {
            try
            {
                // Wyodrębnij zawartość między nawiasami kwadratowymi
                string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
                
                // Spróbuj przeanalizować zawartość tablicy JSON
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values)
                {
                    // Usuń cudzysłowy, jeśli występują
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
                    {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // Przekształć na liczbę całkowitą i dodaj do zbioru
                    if (int.TryParse(cleanValue, out int num))
                    {
                        numbers.Add(num);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing JSON input: {ex.Message}");
                return;
            }
        }
        else
        {
            try
            {
                // Tradycyjny format — wczytaj liczbę elementów, a następnie elementy
                int count = int.Parse(firstLine);
                
                // Wczytaj każdy element i dodaj go do zbioru
                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);
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i sterowanie przepływem

Poćwicz samodzielnie: Kompilator C# online