Iterando sobre Conjuntos
Parte da seção Lógica & Fluxo do Journey de C# da Coddy. Lição 66 de 66.
Iterar sobre um HashSet permite acessar cada elemento do conjunto. Em C#, você pode usar várias abordagens para iterar por um HashSet.
Usando um loop foreach:
// Criar um HashSet
HashSet<string> colors = new HashSet<string>();
// Adicionar elementos ao HashSet
colors.Add("Red");
colors.Add("Green");
colors.Add("Blue");
// Iterar pelo HashSet
foreach (string color in colors)
{
Console.WriteLine(color);
}
Lembre-se de que HashSet não mantém a ordem de inserção, portanto, os elementos podem não ser percorridos na mesma ordem em que foram adicionados.
Você também pode converter para um array ou lista primeiro:
// Converter para array e iterar
string[] colorArray = colors.ToArray();
for (int i = 0; i < colorArray.Length; i++)
{
Console.WriteLine(colorArray[i]);
}
Desafio
FácilCrie um método chamado PrintSetElements que receba um HashSet de inteiros como entrada. O método deve iterar pelo conjunto e imprimir cada elemento em uma nova linha.
Por exemplo, se o conjunto contiver [5, 2, 8], seu método deverá imprimir:
5 2 8
Experimente você mesmo
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
public static void PrintSetElements(HashSet<int> set)
{
// Escreva seu código aqui
}
static void Main(string[] args)
{
HashSet<int> numbers = new HashSet<int>();
// Leia a primeira linha para verificar o formato
string firstLine = Console.ReadLine();
// Verifica se a entrada está no formato de array JSON
if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
{
try
{
// Extrai o conteúdo entre colchetes
string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
// Tenta analisar o conteúdo do array JSON
string[] values = Regex.Split(arrayContent, @",\s*");
foreach (string value in values)
{
// Remove aspas se presentes
string cleanValue = value.Trim();
if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
{
cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
}
// Analisa como inteiro e adiciona ao conjunto
if (int.TryParse(cleanValue, out int num))
{
numbers.Add(num);
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing JSON input: {ex.Message}");
return;
}
}
else
{
try
{
// Formato tradicional - lê a contagem e depois os elementos
int count = int.Parse(firstLine);
// Lê cada elemento e adiciona ao conjunto
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);
}
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Matrizes Multidimensionais
Noções Básicas de Matrizes 2DDeclaração e Inicialização de Matrizes 2DAcesso aos Elementos de Matrizes 2DLoops Aninhados com Matrizes 2DMatrizes IrregularesOperações Comuns com MatrizesRevisão - Multidimensional4Técnicas de Controle de Fluxo
Retornos AntecipadosCláusulas de GuardaInstruções de Salto (goto)Break e ContinueSimplificando Condicionais Aninhadas7Operadores Lógicos Avançados
Avaliação de Curto-CircuitoOperadores Lógicos CondicionaisPrecedência de OperadoresRevisão - Operadores Avançados2Tomada de Decisões Avançada
Múltiplas CondiçõesLógica Booleana ComplexaComparação entre If e SwitchInstruções Switch AninhadasRevisão - Decisões Avançadas5Tratamento de Exceções
Noções básicas de Try-CatchTipos de ExceçãoMúltiplos blocos CatchTrabalhando com ArquivosBloco FinallyUsando Using vs. Try-FinallyExceções PersonalizadasRecapitulação - Tratamento de Erros3Aprimoramentos de Loops
Desempenho de LoopsIteração de Estruturas ComplexasCada Tipo de LoopRefatoração de LoopsRevisão - Loops Otimizados6Tratamento de Nulos
Fundamentos de Referências NulasTipos de Valor AnuláveisPadrões de Verificação de NulosProgramação DefensivaRecapitulação — Segurança contra Nulos9HashMap Parte 1
O que é um HashMap?Declarar um HashMapVerificar se a chave existeAcessando valoresModificando dicionáriosRevisão - HashMap12HashSet Parte 2
Matemática - União de HashSetsMatemática - Interseção de HashSetMatemática - Diferença de ConjuntosMatemática - Diferença SimétricaIterando sobre ConjuntosPratique por conta própria: Compilador de C# online