Une collection de tables de hachage en C# est une collection non générique de paires clé-valeur organisées en fonction du code de hachage de la clé. Les clés sont utilisées pour accéder aux éléments d’une collection de tables de hachage. Le hachage nous aide à récupérer efficacement les données et élimine le besoin de techniques de recherche de données coûteuses. Les techniques de hachage utilisent la clé elle-même pour localiser les données. La clé de la table de hachage est immuable et les entrées en double ne sont pas autorisées dans la table de hachage.
La classe Hashtable est définie dans l'espace de noms System.Collections et fournit une bibliothèque de classes de base pour les collections de tables de hachage en C#. Cette classe Hashtable est utilisée pour créer une collection de paires clé-valeur stockées dans une table de hachage. La recherche d'une clé spécifique est optimisée en calculant le code de hachage de la clé et en le stockant dans un autre panier. Lorsque nous accédons à une valeur de la table de hachage, elle fait correspondre le code de hachage avec la clé spécifiée.
Dans ce didacticiel, nous aborderons un moyen de remplacer un élément ou un élément d'une table de hachage par un élément ou un élément d'une autre table de hachage.
La classe Hashtable discutée ci-dessus fournit des constructeurs pour créer des objets Hashtable et des méthodes pour ajouter, supprimer des éléments et vérifier si un élément, une clé ou une valeur existe dans la table de hachage. Il fournit également des propriétés permettant de vérifier si la table de hachage est vide, de calculer le nombre d'éléments dans la table de hachage, etc.
Mais cela ne permet pas à notre méthode de remplacer un élément entier de la table de hachage par une autre table de hachage. Nous pouvons remplacer des éléments individuels en remplaçant des valeurs.
Pour remplacer le contenu de la table de hachage entière par le contenu d'une autre table de hachage, nous parcourons généralement toute la deuxième table de hachage et remplaçons le contenu de la première table de hachage par le contenu de la deuxième table de hachage.
Nous utiliserons la méthode indiquée ci-dessous.
foreach (DictionaryEntry item in secondHashtable) { firstHashtable[item.Key] = item.Value; Console.WriteLine("{0} ({1}) ", item.Key, item.Value); }
Tout d'abord, nous parcourons la deuxième table de hachage et remplaçons les paires clé-valeur de la première table de hachage par chaque paire clé-valeur de la deuxième table de hachage.
L'intégralité du programme pour mettre en œuvre cette méthode est présenté ci-dessous.
using System; using System. Collections; class MyHashTable { // Main Method static public void Main() { // Create hashtable using the default constructor Hashtable indianNumberSystem = new Hashtable(); //add a key/value pair using the Add() method indianNumberSystem.Add(1,"Ones"); indianNumberSystem.Add(10,"Tens"); indianNumberSystem.Add(100,"Hundred"); indianNumberSystem.Add(1000,"Thousand"); Console.WriteLine("Contents of indianNumberSystem hashtable:"); foreach(DictionaryEntry ele1 in indianNumberSystem){ Console.WriteLine("{0} ({1}) ", ele1.Key, ele1.Value); } Hashtable langCodes = new Hashtable(); langCodes.Add("C++","CPlusPlus"); langCodes.Add("C#","CSharp"); langCodes.Add("Java","Java"); langCodes.Add("PL","Perl"); Console.WriteLine("Contents of langCodes Hashtable:"); foreach(DictionaryEntry ele1 in langCodes){ Console.WriteLine("{0} ({1}) ", ele1.Key, ele1.Value); } Console.WriteLine("After Replacing with langCodes, indianNumberSystem: "); foreach (DictionaryEntry item in langCodes) { indianNumberSystem[item.Key] = item.Value; Console.WriteLine("{0} ({1}) ", item.Key, item.Value); } } }
Ici, nous avons deux tables de hachage, indianNumberSystem et langCodes. Nous remplissons deux tables de hachage avec des valeurs puis affichons leur contenu. Nous parcourons ensuite la table de hachage langCodes et remplaçons chaque élément de la table de hachage indianNumberSystem par un élément de la table de hachage langCodes.
Le résultat de ce programme est présenté ci-dessous.
Contents of indianNumberSystem hashtable: 1000 (Thousand) 10 (Tens) 100 (Hundred) 1 (Ones) Contents of langCodes Hashtable: Java (Java) C# (CSharp) PL (Perl) C++ (CPlusPlus) After Replacing with langCodes, indianNumberSystem: Java (Java) C# (CSharp) PL (Perl) C++ (CPlusPlus)
Nous pouvons voir sur le résultat qu'après le remplacement, le contenu de indianNumberSystem est remplacé par le contenu de langCodes.
Regardons maintenant l’exemple suivant.
Dans cet exemple, nous aurons deux tables de hachage : indianNumberSystem et numSys. Ici, nous ne remplissons pas la table de hachage indianNumberSystem. Nous créons simplement un objet. Les valeurs suivantes ont été ajoutées à la table de hachage numSys à l'aide de la méthode Add.
1 |
un |
10 |
十 |
100 |
Cent |
1000 |
Des milliers |
Le programme complet de cet exemple est présenté ci-dessous.
using System; using System. Collections; class MyHashTable { // Main Method static public void Main() { // Create hashtable using the default constructor Hashtable indianNumberSystem = new Hashtable(); Hashtable numSys = new Hashtable(); numSys.Add(1,"Ones"); numSys.Add(10,"Tens"); numSys.Add(100,"Hundred"); numSys.Add(1000,"Thousand"); Console.WriteLine("Contents of numSys Hashtable:"); foreach(DictionaryEntry ele1 in numSys){ Console.WriteLine("{0} ({1}) ", ele1.Key, ele1.Value); } Console.WriteLine("After Replacing with numSys, indianNumberSystem: "); foreach (DictionaryEntry item in numSys) { indianNumberSystem[item.Key] = item.Value; Console.WriteLine("{0} ({1}) ", item.Key, item.Value); } } }
Ici nous utilisons la même méthode que le premier programme, la seule différence est que la première table de hachage est vide. On remplace ou déplace ensuite directement les éléments de la deuxième table de hachage dans la première table de hachage.
La sortie de ce programme est donnée ci-dessous.
Contents of numSys Hashtable: 1000 (Thousand) 10 (Tens) 100 (Hundred) 1 (Ones) After Replacing with numSys, indianNumberSystem: 1000 (Thousand) 10 (Tens) 100 (Hundred) 1 (Ones)
Comme le montre le résultat du programme, le contenu de la table numSys est désormais le contenu de indianNumberSystem.
Ainsi, en utilisant une simple boucle et en parcourant la table de hachage, nous pouvons remplacer un élément par une autre table de hachage.
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!