Rimuovere un elemento
Fa parte della sezione Logica e flusso del percorso C# di Coddy. Lezione 58 di 66.
Il metodo Remove(element) rimuove l'elemento specificato da HashSet, se esiste. Questo metodo restituisce true se l'elemento è stato rimosso correttamente e false se l'elemento non è stato trovato nell'insieme.
Crea un HashSet vuoto:
HashSet<string> fruits = new HashSet<string>();Aggiungi alcuni elementi all'insieme:
fruits.Add("Apple");
fruits.Add("Banana");
fruits.Add("Cherry");Dopo aver eseguito il codice precedente, il set fruits contiene:
["Apple", "Banana", "Cherry"]Ora rimuovi "Banana" dall'insieme:
bool wasRemoved = fruits.Remove("Banana");Dopo la rimozione, l’insieme contiene:
["Apple", "Cherry"]Il valore di wasRemoved sarà true perché "Banana" è stata trovata e rimossa.
Se proviamo a rimuovere un elemento che non esiste:
bool wasRemoved = fruits.Remove("Orange");Il set rimane invariato e wasRemoved sarà false.
Sfida
FacileCrea un metodo chiamato RemoveElement che accetta due argomenti:
- Un HashSet di stringhe (
set) - Una stringa (
element) da rimuovere
Il metodo deve tentare di rimuovere l'elemento specificato dal set. Se l'elemento è stato rimosso correttamente, stampa "Element removed: True"; altrimenti stampa "Element removed: False". Poi, stampa il set aggiornato su una nuova riga.
Provalo tu
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public class Program
{
public static void RemoveElement(HashSet<string> set, string element)
{
// Scrivi qui il tuo codice
}
public static void Main()
{
HashSet<string> set = new HashSet<string>();
// Leggi la prima riga per verificare se è in formato JSON
string firstLine = Console.ReadLine();
string elementToRemove;
// Verifica se l'input è nel formato di un array JSON
if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
{
try
{
// Estrai il contenuto tra le parentesi quadre
string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
// Usa un'espressione regolare per trovare tutte le stringhe tra virgolette
MatchCollection matches = Regex.Matches(arrayContent, @"""([^""]*)""");
foreach (Match match in matches)
{
// Aggiungi il gruppo acquisito (senza virgolette)
if (match.Groups.Count > 1)
{
set.Add(match.Groups[1].Value.Trim());
}
}
// Leggi la seconda riga per individuare l'elemento da rimuovere
string secondLine = Console.ReadLine();
// Verifica se l'elemento è nel formato di una stringa JSON
Match elementMatch = Regex.Match(secondLine, @"""([^""]*)""");
if (elementMatch.Success && elementMatch.Groups.Count > 1)
{
elementToRemove = elementMatch.Groups[1].Value;
}
else
{
elementToRemove = secondLine;
}
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing JSON input: {ex.Message}");
return;
}
}
else
{
// Elabora il formato di input tradizionale
string[] elements = firstLine.Split(',');
foreach (string element in elements)
{
set.Add(element.Trim());
}
// Leggi l'elemento da rimuovere nel formato tradizionale
elementToRemove = Console.ReadLine();
}
RemoveElement(set, elementToRemove);
}
}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 errori8Sistema di analisi dei dati
Configurazione della raccolta datiLogica di inserimento dei dati11HashSet Parte 1
Che cos’è un HashSet?Aggiungere un elementoRimuovere un elementoVerificare se un elemento esisteVuoto e dimensioneRipasso - HashSet3Miglioramenti 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 nullEsercitati da solo: Compilatore C# online