Supprimer un élément
Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 58 sur 66.
La méthode Remove(element) supprime l'élément spécifié de la HashSet, s'il existe. Cette méthode retourne true si l'élément a été supprimé avec succès, et false si l'élément n'a pas été trouvé dans l'ensemble.
Créer un HashSet vide :
HashSet<string> fruits = new HashSet<string>();Ajoutez quelques éléments à l'ensemble :
fruits.Add("Apple");
fruits.Add("Banana");
fruits.Add("Cherry");Après l'exécution du code ci-dessus, l'ensemble fruits contient :
["Apple", "Banana", "Cherry"]Maintenant, supprimez « Banana » de l'ensemble :
bool wasRemoved = fruits.Remove("Banana");Après suppression, l'ensemble contient :
["Apple", "Cherry"]La valeur de wasRemoved sera true parce que « Banana » a été trouvée et supprimée.
Si nous essayons de supprimer un élément qui n'existe pas :
bool wasRemoved = fruits.Remove("Orange");L'ensemble reste inchangé, et wasRemoved sera false.
Défi
FacileCréez une méthode nommée RemoveElement qui prend deux arguments :
- Un HashSet de chaînes (
set) - Une chaîne (
element) à supprimer
La méthode doit tenter de supprimer l'élément donné de l'ensemble. Si l'élément a été supprimé avec succès, affichez "Element removed: True", sinon affichez "Element removed: False". Ensuite, affichez l'ensemble mis à jour sur une nouvelle ligne.
Aide-mémoire
La méthode Remove(element) supprime l'élément spécifié de la HashSet et retourne true si la suppression est réussie, false si l'élément n'a pas été trouvé :
HashSet<string> fruits = new HashSet<string>();
fruits.Add("Apple");
fruits.Add("Banana");
fruits.Add("Cherry");
bool wasRemoved = fruits.Remove("Banana"); // returns true
bool notFound = fruits.Remove("Orange"); // returns falseEssayez vous-même
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public class Program
{
public static void RemoveElement(HashSet<string> set, string element)
{
// Écrivez votre code ici
}
public static void Main()
{
HashSet<string> set = new HashSet<string>();
// Lire la première ligne pour vérifier si c'est au format JSON
string firstLine = Console.ReadLine();
string elementToRemove;
// Vérifier si l'entrée est au format tableau JSON
if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
{
try
{
// Extraire le contenu entre crochets carrés
string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
// Utiliser regex pour faire correspondre toutes les chaînes entre guillemets
MatchCollection matches = Regex.Matches(arrayContent, @"""([^""]*)""");
foreach (Match match in matches)
{
// Ajouter le groupe capturé (sans guillemets)
if (match.Groups.Count > 1)
{
set.Add(match.Groups[1].Value.Trim());
}
}
// Lire la deuxième ligne pour l'élément à supprimer
string secondLine = Console.ReadLine();
// Vérifier si l'élément est au format chaîne 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
{
// Traiter le format d'entrée traditionnel
string[] elements = firstLine.Split(',');
foreach (string element in elements)
{
set.Add(element.Trim());
}
// Lire l'élément à supprimer au format traditionnel
elementToRemove = Console.ReadLine();
}
RemoveElement(set, elementToRemove);
}
}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
1Tableaux multidimensionnels
Bases des tableaux 2DDéclaration et initialisation en 2DAccès aux éléments d'un tableau 2DBoucles imbriquées et tableaux 2DTableaux irréguliersOpérations matricielles courantesRécapitulatif - Multidimensionnel4Techniques de contrôle de flux
Retours anticipésClauses de gardeInstructions de saut (goto)Break et ContinueAplatir les conditionnelles imbriquées2Prise de décision avancée
Conditions multiplesLogique booléenne complexeComparaison If vs SwitchInstructions Switch imbriquéesRécapitulatif - Décisions avancées5Gestion des exceptions
Bases du Try-CatchTypes d'exceptionsBlocs Catch multiplesManipulation de fichiersLe bloc FinallyUsing vs Try-FinallyExceptions personnaliséesRécapitulatif - Gestion des erreurs8Système d'analyse de données
Configuration de la collecte de donnéesLogique de saisie de données11HashSet Partie 1
Qu'est-ce qu'un HashSet ?Ajouter un élémentSupprimer un élémentVérifier si un élément existeVide et tailleRécapitulatif - HashSet3Améliorations des boucles
Performance des bouclesItération de structures complexesChaque type de boucleRefactorisation des bouclesRécapitulatif - Boucles optimisées6Gestion des valeurs nulles
Les bases des références nullesTypes valeur nullablesPatterns de vérification de nullitéProgrammation défensiveRécapitulatif - Null Safety