Menu
Coddy logo textTech

Itération sur les ensembles

Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 66 sur 66.

Itérer sur un HashSet vous permet d'accéder à chaque élément de l'ensemble. En C#, vous pouvez utiliser diverses approches pour itérer à travers un HashSet.

Utilisation d'une boucle foreach :

// Créer un HashSet
HashSet<string> colors = new HashSet<string>();

// Ajouter des éléments au HashSet
colors.Add("Red");
colors.Add("Green");
colors.Add("Blue");

// Itérer à travers le HashSet
foreach (string color in colors)
{
    Console.WriteLine(color);
}

Rappelez-vous que HashSet ne maintient pas l'ordre d'insertion, les éléments ne seront donc pas itérés dans le même ordre qu'ils ont été ajoutés.

Vous pouvez également convertir en tableau ou liste d'abord :

// Convertir en tableau et itérer
string[] colorArray = colors.ToArray();
for (int i = 0; i < colorArray.Length; i++)
{
    Console.WriteLine(colorArray[i]);
}
challenge icon

Défi

Facile

Créez une méthode nommée PrintSetElements qui prend un HashSet d'entiers en entrée. La méthode doit itérer à travers l'ensemble et afficher chaque élément sur une nouvelle ligne.

Par exemple, si l'ensemble contient [5, 2, 8], votre méthode doit afficher :

5 2 8

Aide-mémoire

Pour itérer sur un HashSet en C#, utilisez une boucle foreach :

HashSet<string> colors = new HashSet<string>();
colors.Add("Red");
colors.Add("Green");
colors.Add("Blue");

foreach (string color in colors)
{
    Console.WriteLine(color);
}

HashSet ne maintient pas l'ordre d'insertion, donc les éléments peuvent ne pas être itérés dans le même ordre qu'ils ont été ajoutés.

Vous pouvez également convertir en tableau d'abord :

string[] colorArray = colors.ToArray();
for (int i = 0; i < colorArray.Length; i++)
{
    Console.WriteLine(colorArray[i]);
}

Essayez vous-même

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

class Program
{
    public static void PrintSetElements(HashSet<int> set)
    {
        // Écrivez votre code ici
    }
    
    static void Main(string[] args)
    {
        HashSet<int> numbers = new HashSet<int>();
        
        // Lire la première ligne pour vérifier le format
        string firstLine = Console.ReadLine();
        
        // Vérifier si l'entrée est au format tableau JSON
        if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
        {
            try
            {
                // Extraire le contenu entre les crochets carrés
                string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
                
                // Essayer d'analyser le contenu du tableau JSON
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values)
                {
                    // Supprimer les guillemets s'ils sont présents
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
                    {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // Analyser en entier et ajouter à l'ensemble
                    if (int.TryParse(cleanValue, out int num))
                    {
                        numbers.Add(num);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing JSON input: {ex.Message}");
                return;
            }
        }
        else
        {
            try
            {
                // Format traditionnel - lire le nombre puis les éléments
                int count = int.Parse(firstLine);
                
                // Lire chaque élément et l'ajouter à l'ensemble
                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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux