Iterare sugli insiemi
Fa parte della sezione Logica e flusso del percorso C# di Coddy. Lezione 66 di 66.
L'iterazione su un HashSet ti consente di accedere a ogni elemento dell'insieme. In C#, puoi usare diversi approcci per iterare su un HashSet.
Usando un ciclo foreach:
// Crea un HashSet
HashSet<string> colors = new HashSet<string>();
// Aggiungi elementi al HashSet
colors.Add("Red");
colors.Add("Green");
colors.Add("Blue");
// Itera sul HashSet
foreach (string color in colors)
{
Console.WriteLine(color);
}
Ricorda che HashSet non mantiene l'ordine di inserimento, quindi gli elementi potrebbero non essere iterati nello stesso ordine in cui sono stati aggiunti.
Puoi anche convertire prima in un array o in una lista:
// Converti in un array e itera
string[] colorArray = colors.ToArray();
for (int i = 0; i < colorArray.Length; i++)
{
Console.WriteLine(colorArray[i]);
}
Sfida
FacileCrea un metodo denominato PrintSetElements che accetta in input un HashSet di interi. Il metodo dovrebbe iterare sull'insieme e stampare ogni elemento su una nuova riga.
Ad esempio, se l'insieme contiene [5, 2, 8], il metodo dovrebbe stampare:
5 2 8
Provalo tu
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
public static void PrintSetElements(HashSet<int> set)
{
// Scrivi qui il tuo codice
}
static void Main(string[] args)
{
HashSet<int> numbers = new HashSet<int>();
// Leggi la prima riga per verificare il formato
string firstLine = Console.ReadLine();
// Verifica se l'input è nel formato di un array JSON
if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
{
try
{
// Estrai il contenuto tra parentesi quadre
string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
// Prova a interpretare il contenuto dell'array JSON
string[] values = Regex.Split(arrayContent, @",\s*");
foreach (string value in values)
{
// Rimuovi le virgolette, se presenti
string cleanValue = value.Trim();
if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
{
cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
}
// Interpreta il valore come numero intero e aggiungilo all'insieme
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 tradizionale: leggi prima il numero di elementi, poi gli elementi
int count = int.Parse(firstLine);
// Leggi ogni elemento e aggiungilo all'insieme
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);
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Array multidimensionali
Fondamenti degli array 2DDichiarare e inizializzare array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DArray irregolariOperazioni comuni sulle matriciRipasso: array multidimensionali4Tecniche di controllo del flusso
Uscite anticipateClausole di guardiaIstruzioni di salto (goto)Break e continueAppiattire le condizioni annidate2Decisioni avanzate
Condizioni multipleLogica booleana complessaConfronto tra if e switchIstruzioni switch annidateRiepilogo - decisioni avanzate5Gestione delle eccezioni
Nozioni di base su try-catchTipi di eccezioneBlocchi catch multipliLavorare con i fileBlocco finallyUsing vs. try-finallyEccezioni personalizzateRiepilogo - gestione degli errori3Miglioramenti dei cicli
Prestazioni dei cicliIterare strutture complesseOgni tipo di cicloRifattorizzare i cicliRiepilogo - Cicli ottimizzati6Gestione dei valori null
Fondamenti dei riferimenti nullTipi valore nullableSchemi di controllo dei valori nullProgrammazione difensivaRiepilogo: sicurezza rispetto ai valori null9HashMap Parte 1
Che cos'è una HashMap?Dichiarare una HashMapVerificare se esiste una chiaveAccedere ai valoriModificare i dizionariRiepilogo - HashMap12HashSet Parte 2
Matematica - Unione di HashSetMatematica - Intersezione di HashSetMatematica - Differenza tra insiemiMatematica - Differenza simmetricaIterare sugli insiemiEsercitati da solo: Compilatore C# online