Maison > développement back-end > C++ > Comment obtenir des éléments de table de hachage sous forme de tableau trié ?

Comment obtenir des éléments de table de hachage sous forme de tableau trié ?

WBOY
Libérer: 2023-08-26 22:53:21
avant
1112 Les gens l'ont consulté

Comment obtenir des éléments de table de hachage sous forme de tableau trié ?

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.

Obtenir les éléments de la table de hachage sous forme de tableau trié

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é

Exemple

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);
      }
   }
}
Copier après la connexion

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é.

Sortie

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
Copier après la connexion

À 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.

Exemple

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);
      }
   }
}
Copier après la connexion

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é.

Sortie

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
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal