Accéder aux valeurs
Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 49 sur 66.
En C#, nous utilisons Dictionary<TKey, TValue> comme l'équivalent de HashMap. Après avoir ajouté des éléments à un Dictionary, vous devrez les récupérer.
Créez un Dictionary avec des clés de type string et des valeurs de type int :
Dictionary<string, int> studentScores = new Dictionary<string, int>();Ajoutez quelques entrées :
studentScores.Add("John", 95);
studentScores.Add("Mary", 88);Accéder à une valeur en utilisant une clé :
int johnScore = studentScores["John"];Après l'exécution du code ci-dessus, johnScore contient :
95Soyez prudent ! Si vous essayez d'accéder à une clé qui n'existe pas, vous obtiendrez une KeyNotFoundException :
// Cela lancera une exception si "Bob" n'est pas dans le dictionnaire
int bobScore = studentScores["Bob"];Défi
FacileCréez une méthode nommée GetValueByKey qui prend deux arguments :
- Un Dictionary<string, int> (dictionnaire).
- Une chaîne de caractères (clé) à rechercher.
La méthode doit essayer d'accéder à la valeur pour la clé donnée et :
- Si la clé existe, affichez la valeur.
- Si la clé n'existe pas, affichez "Key not found".
Aide-mémoire
Créez un Dictionary avec des clés string et des valeurs int :
Dictionary<string, int> studentScores = new Dictionary<string, int>();Ajoutez des entrées au Dictionary :
studentScores.Add("John", 95);
studentScores.Add("Mary", 88);Accédez à une valeur en utilisant une clé :
int johnScore = studentScores["John"];Accéder à une clé inexistante lèvera une KeyNotFoundException :
// Cela lèvera une exception si "Bob" n'est pas dans le dictionnaire
int bobScore = studentScores["Bob"];Essayez vous-même
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
public static void GetValueByKey(Dictionary<string, int> dictionary, string key)
{
// Écrire le code ici
}
static void Main(string[] args)
{
// Lire un dictionnaire au format JSON : {"key1":value1,"key2":value2}
string dictionaryInput = Console.ReadLine();
string key = Console.ReadLine();
Dictionary<string, int> dictionary = new Dictionary<string, int>();
// Analyser la chaîne d'entrée pour créer un dictionnaire
if (!string.IsNullOrEmpty(dictionaryInput))
{
try
{
// Vérifier si l'entrée est au format JSON
if (dictionaryInput.StartsWith("{") && dictionaryInput.EndsWith("}"))
{
// Supprimer les accolades
string jsonContent = dictionaryInput.Substring(1, dictionaryInput.Length - 2);
// Diviser par les virgules qui ne sont pas entre guillemets
string pattern = @",(?=(?:[^""]*""[^""]*"")*[^""]*$)";
string[] entries = Regex.Split(jsonContent, pattern);
foreach (string entry in entries)
{
// Extraire la clé et la valeur à l'aide d'une regex
Match match = Regex.Match(entry, @"""([^""]+)""\s*:\s*(\d+)");
if (match.Success)
{
string keyMatch = match.Groups[1].Value;
int valueMatch = int.Parse(match.Groups[2].Value);
dictionary.Add(keyMatch, valueMatch);
}
}
}
// Handle the original format "key1:value1,key2:value2" as fallback
else
{
string[] pairs = dictionaryInput.Split(',');
foreach (string pair in pairs)
{
string[] keyValue = pair.Split(':');
if (keyValue.Length == 2)
{
dictionary.Add(keyValue[0], int.Parse(keyValue[1]));
}
}
}
GetValueByKey(dictionary, key);
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing input: {ex.Message}");
}
}
}
}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 erreurs3Amé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 Safety9HashMap Partie 1
Qu'est-ce qu'un HashMap ?Déclarer un HashMapVérifier si une clé existeAccéder aux valeursModifier des dictionnairesRécapitulatif - HashMap