Une table de hachage est une collection non universelle de paires clé-valeur disposées en fonction du code de hachage de la clé. Les tables de hachage sont utilisées pour créer des collections stockées à l'aide de tables de hachage. Les tables de hachage optimisent les recherches en calculant le code de hachage pour chaque clé et en le stockant dans un panier interne. Lorsque nous accédons à une valeur spécifique de la table de hachage, le code de hachage correspond à la clé spécifiée.
Cette collection de tables de hachage est définie dans l'espace de noms System.Collections de C#. La classe qui représente une collection de tables de hachage est la classe « Hashtable ». Cette classe fournit des constructeurs, des méthodes et des propriétés pour opérer sur des collections de tables de hachage. Par défaut, les collections de tables de hachage ne sont pas triées. Si nous voulons une collection triée de tables de hachage, nous devons la représenter sous forme de Array ou ArrayList et trier les éléments.
Dans cet article, nous apprendrons comment obtenir des éléments de table de hachage sous forme de tableau trié. Alors commençons.
Nous savons que par défaut, les collections de tables de hachage ne sont pas triées. Trier une collection de tables de hachage peut être très difficile car nous créons la collection de tables de hachage en fonction des clés, puis ajoutons des valeurs à chaque clé.
Si nous voulons trier une collection de tables de hachage, nous devons la trier en fonction de clés ou de valeurs. Il n'existe pas de méthode directe dans la classe Hashtable pour trier une collection de tables de hachage. Il faut donc se tourner vers d’autres méthodes.
Une solution consiste à obtenir les éléments de la table de hachage (clés ou valeurs) sous forme de tableau trié. Pour ce faire, nous suivrons les étapes répertoriées ci-dessous.
Créer un objet de table de hachage
Remplissez cet objet avec des paires clé-valeur
Créez un tableau de type chaîne, longueur = longueur de la table de hachage
Parcourez la table de hachage en fonction des clés et remplissez le tableau avec chaque clé
Trier le tableau généré
Nous avons écrit cette méthode en utilisant C# comme indiqué ci-dessous.
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"); langCodes.Add("PG", "Prolog"); int k = langCodes.Count; // create array of length = hashtable length string[] sortedArray = new string[k]; // Retrieve key values in Array int i = 0; Console.WriteLine("Hashtable langCodes Contents:"); foreach (DictionaryEntry de in langCodes) { Console.WriteLine("{0} ({1}) ", de.Key, de.Value); sortedArray[i] = de.Key.ToString(); i++; } Array.Sort(sortedArray); Console.WriteLine("Contents of sorted array based on Hashtable keys:"); foreach (var item in sortedArray) { Console.WriteLine(item); } } }
Dans ce programme, nous définissons un objet Hashtable langCodes et le remplissons avec des paires clé-valeur. Nous récupérons ensuite la longueur de la table de hachage et utilisons Déclarez un tableau "sortedArray" de cette longueur. Nous traversons ensuite table de hachage langCodes et remplir l'objet tableau trié avec des clés langCodes Valeurs de la table de hachage.
Ensuite, nous utilisons le filtre Array.Sort(sortedArray) pour trier le tableau et imprimer Ce tableau trié.
La sortie du programme est la suivante.
Hashtable langCodes Contents: PG (Prolog) Java (Java) C# (CSharp) PL (Perl) C++ (CPlusPlus) Contents of sorted array based on Hashtable keys: C# C++ Java PG PL
À partir du résultat, nous pouvons voir que les éléments clés de la table de hachage sont récupérés sous la forme d'un tableau trié d'éléments.
Donnons maintenant un autre exemple. Nous utilisons la même méthode évoquée ci-dessus. La seule différence est que dans cet exemple, nous remplirons le tableau avec des valeurs au lieu des clés d'une table de hachage.
Voyons le programme C# complet.
using System; using System.Collections; class Program { public static void Main() { // Create a Hashtable Hashtable numberNames = new Hashtable(); // Add elements to the Hashtable numberNames.Add(12, "Twelve"); numberNames.Add(2, "Two"); numberNames.Add(65, "Sixty Five"); numberNames.Add(15, "Fifteen"); numberNames.Add(18, "Eighteen"); int k = numberNames.Count; //create array of length = hashtable length string[] sortedArray = new string[k]; // Retrieve hashtable values in array. int i = 0; Console.WriteLine("Hashtable langCodes Contents:"); foreach (DictionaryEntry de in numberNames) { Console.WriteLine("{0} ({1}) ", de.Key, de.Value); sortedArray[i] = de.Value.ToString(); i++; } Array.Sort(sortedArray); Console.WriteLine("Contents of sorted array based on Hashtable values:"); foreach (var item in sortedArray) { Console.WriteLine(item); } } }
Le programme a un objet de table de hachage, numberNames. Nous le remplissons de nombres et de leurs noms de numéros correspondants. En parcourant la table de hachage, nous remplissons le tableau trié avec des valeurs. Nous trions ensuite le tableau à l'aide du filtre Array.Sort() et imprimons le tableau trié.
La sortie du programme est présentée ci-dessous.
Hashtable langCodes Contents: 18 (Eighteen) 12 (Twelve) 65 (Sixty Five) 2 (Two) 15 (Fifteen) Contents of sorted array based on Hashtable values: Eighteen Fifteen Sixty Five Twelve Two
D'après le résultat, nous pouvons voir que le contenu du tableau (les valeurs dans la table de hachage) sont effectivement triés par ordre alphabétique. Nous pouvons facilement comparer la sortie de la table de hachage et le tableau trié. Dans une table de hachage, la sortie n'est pas triée. Les paires clé-valeur sont affichées de manière aléatoire. Dans un tableau, la sortie est triée.
Bien que trier les éléments de la table de hachage soit difficile, nous pouvons le faire en représentant les éléments de la table de hachage sous forme de tableaux. Mais il n'est pas possible de trier les clés et les valeurs en même temps. On peut récupérer toutes les clés d'un tableau ou toutes les valeurs d'un tableau. Nous pouvons ensuite trier le tableau en utilisant le filtre Array.Sort(). Nous pouvons également convertir la table de hachage en un tableau ou une liste de tableaux et la traiter.
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!