Maison > Article > développement back-end > Programme C# pour obtenir des clés basées sur les valeurs de la collection Hashtable
Une table de hachage est une collection en C# qui contient des éléments identifiés comme des paires clé-valeur. Ainsi, contrairement à d'autres structures de données comme la pile, la file d'attente ou ArrayList en C# qui stockent une seule valeur, une table de hachage en C# stocke 2 valeurs. Ces deux valeurs, une paire clé-valeur, forment un élément de la table de hachage.
Dans une table de hachage, les clés sont uniques et ne doivent pas être nulles. Les valeurs d'une table de hachage peuvent être nulles et répétées.
En C#, l'interface System.collections fournit une classe appelée "Hashtable" pour représenter une collection de tables de hachage. Cette classe fournit divers constructeurs pour créer des objets de table de hachage, ainsi que des méthodes et des propriétés pour effectuer diverses opérations sur les objets de table de hachage.
Dans cet article, nous apprendrons comment obtenir les clés d'une collection de tables de hachage en fonction de leurs valeurs.
La classe Hashtable n'a pas de méthode directe pour obtenir la clé en fonction de la valeur dans la table de hachage. Par conséquent, nous devons écrire un programme pour hacher une collection de tables afin de récupérer la clé en fonction d'une valeur.
Discutons de la méthode pour obtenir la clé en fonction de la valeur. Pour ce faire, nous parcourons l’intégralité de la table de hachage en fonction de la clé de la table de hachage. Nous faisons ensuite correspondre chaque valeur avec la valeur spécifiée, et si les valeurs correspondent, nous renvoyons la clé correspondante.
Pour parcourir la table de hachage, nous pouvons utiliser la boucle foreach suivante.
foreach (string key in langCodes.Keys) { if (langCodes[key].ToString() == value) { retKey = key; } }
L'itérateur que nous utilisons dans la boucle foreach pour parcourir la table de hachage est la collection de clés (langCodes.Keys). La valeur correspondante pour chaque clé est ensuite comparée à la valeur spécifiée, et s'il y a une correspondance, cette clé spécifique est renvoyée.
Le programme ci-dessous montre cette implémentation.
using System; using System.Collections; class Program { public static void Main(){ // Create a Hashtable Hashtable langCodes = new Hashtable(); // Add elements to the Hashtable langCodes.Add("C++", "CPlusPlus"); langCodes.Add("C#", "CSharp"); langCodes.Add("Java", "Java"); langCodes.Add("PL", "Perl"); string value = "CSharp"; string retKey=""; foreach (string key in langCodes.Keys){ if (langCodes[key].ToString() == value){ retKey = key; } } if(retKey != ""){ Console.WriteLine("Key for the value = {0} is {1}", value,retKey); } else { Console.WriteLine("Key for the value = {0} is not present in the Hashtable", value); } } }
Ici, nous avons une table de hachage appelée "langCodes" composée de codes de langage de programmation et de leurs valeurs correspondantes. Déclarez une variable chaîne contenant la valeur spécifiée. Utilisez ensuite la construction foreach pour parcourir toute la table de hachage et rechercher les clés identiques à la valeur spécifiée. Lorsqu'une telle clé est trouvée, la valeur de la clé est renvoyée dans la variable retKey.
S'il y a une valeur dans la variable retKey, nous produisons la valeur comme clé de la valeur spécifiée. Si retKey est vide, vous pouvez conclure
Key for the value = CSharp is C#
Maintenant, disons que nous voulons obtenir une clé avec la valeur « JavaScript ».
string value = "JavaScript";
Avec ce changement, nous exécutons le programme ci-dessus et il générera la sortie suivante.
Key for the value = JavaScript is not present in the Hashtable
Maintenant, comme il n'y a aucun élément correspondant au langage JavaScript dans la table de hachage, le programme affiche le message ci-dessus.
Prenons un exemple pour simplifier ce sujet.
Le programme suivant récupère la clé dans une table de hachage en fonction d'une valeur spécifique.
using System; using System.Collections; class Program { public static void Main() { // Create a Hashtable Hashtable myHashTable = new Hashtable(); // Add elements to the Hashtable myHashTable.Add("First", "Hello"); myHashTable.Add("Second", "World"); myHashTable.Add("Third", ""); myHashTable.Add("Fourth", "!"); string value = ""; string retKey=""; foreach (string key in myHashTable.Keys) { if (myHashTable[key].ToString() == value) { retKey = key; } } if(retKey != ""){ Console.WriteLine("Key for the value = {0} is {1}", value,retKey); } else { Console.WriteLine("Key for the value = {0} is not present in the Hashtable", value); } } }
Dans ce programme, nous avons une table de hachage "myHashTable" qui stocke la fameuse citation "Hello World!". Mais nous ne stockons pas ces mots de manière contiguë. Au lieu de cela, nous avons introduit une valeur nulle après le mot « Monde ».
Ce programme est conçu pour obtenir des clés avec des valeurs nulles. La sortie générée est présentée ci-dessous.
Key for the value = is Third
Ici, puisque la table de hachage autorise les valeurs nulles, lorsque nous spécifions une valeur nulle, la clé de valeur nulle correspondante sera récupérée.
Changeons maintenant la valeur à partir de laquelle nous voulons obtenir la clé. Ensuite, nous changeons la valeur en « ! » et exécutons le programme.
string value = "!";
Key for the value = ! is Fourth
Le troisième élément de la table de hachage est une valeur nulle, donc la dernière partie de la citation est la quatrième position dans la table de hachage.
De cette façon, nous pouvons programmer la table de hachage pour récupérer une clé étant donné une valeur spécifique dans la table de hachage. Comme nous l'avons vu, puisque les tables de hachage autorisent les valeurs nulles, nous pouvons également transmettre des valeurs nulles et obtenir leurs clés correspondantes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!