Comment travailler avec la collection de table de hachage dans Visual Basic .NET ou dans Visual Basic 2005

Traductions disponibles Traductions disponibles
Numéro d'article: 307933 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article fournit des informations sur la collection de table de hachage. Étant donné que le hachage évite aux coûteux recherche de données pour récupérer les données, vous pouvez utiliser le hachage pour récupérer efficacement les données. Le hachage utilise la valeur de la clé elle-même pour rechercher des données.

Les bibliothèques de classes base offrent une classe de table de hachage qui est définie dans l'espace de noms System.Collections afin que vous ne soient pas requis pour coder vos propres tables de hachage.

Étapes pour créer l'exemple

Une collection de table de hachage stocke une paire (clés, valeur) et utilise la clé de hachage et d'obtenir l'emplacement de stockage. La clé est immuable et ne peut pas avoir des entrées en double dans la table de hachage . Cet exemple utilise plusieurs instances d'une classe Person simple à stocker dans une table de hachage . Le nom sert de la clé .
  1. Ouvrez Visual Studio .NET ou Visual Studio 2005 et créez un projet d'application Windows dans Visual Basic .NET ou Visual Basic 2005. Form1 est ajouté au projet par défaut.
  2. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet, pointez sur Ajouter et puis cliquez sur Ajouter une classe pour ajouter un module de classe . Class1 est ajouté au projet par défaut.
  3. Dans la boîte de dialogue Ajouter un nouvel élément , cliquez sur Ouvrir .

    note Dans Visual Studio 2005, cliquez sur Ajouter au lieu d'ouvrir .
  4. Remplacez tout code dans le module Class1 par le code suivant :
    Public Class Person
        Public Fname, Lname As String
    
        Sub New(ByVal FirstName As String, ByVal LastName As String)
            Fname = FirstName
            Lname = LastName
        End Sub
    
        Public Overrides Function ToString() As String
            Return Fname + " " + Lname
        End Function
    End Class
    						
    la classe Person possède un constructeur qui accepte les paramètres FirstName et LastName et affecte ces paramètres aux variables locales. La fonction ToString remplace ToString de la classe Object pour renvoyer fname et lname concaténées ensemble.
  5. De Form1.vb, ajoutez l'instruction Imports en haut du module de code :
    Imports System.Collections
    					
  6. Créer un objet Hashtable au niveau du formulaire et déclarer trois variables de type personne . Ajoutez le code suivant à la classe Form1 :
    Dim MyTable As New Hashtable()
    
    'For simplicity, create three Person objects to add to the HashTable collection.
    
    Dim Person1, Person2, Person3 As Person  
    					
  7. Dans les étapes suivantes, utilisez la méthode Add de l'objet Hashtable pour ajouter trois objets Person à la Hashtable dans un bloc try-catch . Le bloc try-catch intercepte l'exception et affiche un message si des clés en double existent.
    1. Placez un contrôle de bouton sur Form1 et modifiez la propriété à Ajouter des éléments .
    2. Double-cliquez sur le bouton pour ouvrir la fenêtre Code et collez le code suivant dans l'événement Button1_Click :
      Person1 = New Person("Karen", "Berge")
      Person2 = New Person("David", "Campbell")
      Person3 = New Person("Jim", "Kim")
      
      'The Add method takes Key as the first parameter and Value as the second parameter.
      
      Try
           MyTable.Add(Person1.Lname, Person1)
           MyTable.Add(Person2.Lname, Person2)
           MyTable.Add(Person3.Lname, Person3)
      Catch ae As ArgumentException
           MessageBox.Show("Duplicate Key")
      End Try
      						
  8. L'objet Hashtable fournit un indexeur. Dans les étapes suivantes, index avec la clé à accéder à la valeur est stockée dans l'emplacement haché.
    1. Ajouter un contrôle bouton à Form1 et modifier la propriété Text pour obtenir les articles .
    2. Double-cliquez sur le bouton et collez le code suivant dans l'événement button2_Click :
      'Use the indexer of the Hashtable class to retrieve your objects. The indexer takes 
      'Key as a parameter and accesses it with the Hashed location.
              
      Try
           MessageBox.Show(MyTable(Person1.Lname).ToString)
           MessageBox.Show(MyTable(Person2.Lname).ToString)
           MessageBox.Show(MyTable(Person3.Lname).ToString)
      Catch ex As NullReferenceException
           MessageBox.Show("Key not in Hashtable")
      End Try
      						
  9. Dans les étapes suivantes, utilisez la méthode Remove pour supprimer un seul élément de la collection de table de hachage :
    1. Ajoutez un contrôle de bouton à Form1 et modifier la propriété Text sur Supprimer un élément .
    2. Double-cliquez sur le bouton et collez le code suivant dans l'événement Button3_Click :
      'Use the Count property.
      If (MyTable.Count = 0) Then
           MessageBox.Show("There are no items in HashTable")
      Else
           MessageBox.Show("The count before removing an Item is" & " " & MyTable.Count)
           MessageBox.Show("Removing value stored at key value (Berge)")
           'Remove the object that is stored at the Key value Person1.Lname.
           MyTable.Remove(Person1.Lname)
      End If
      						
  10. Dans les étapes suivantes, énumérer les éléments qui sont stockées dans la collection de table de hachage.
    1. Ajouter un contrôle bouton à Form1 et modifier la propriété Text à énumérer .
    2. Double-cliquez sur le bouton et collez le code suivant dans l'événement Button4_Click :
      Dim Enumerator As IDictionaryEnumerator
      Enumerator = MyTable.GetEnumerator()
      
      If (MyTable.Count = 0) Then
           MessageBox.Show("The HashTable is empty")
      Else
           MessageBox.Show("Enumerating through the HashTable collection")
           While Enumerator.MoveNext()
                MessageBox.Show(Enumerator.Value.ToString())
           End While
      End If
      
      Dim MyKeys As ICollection
      Dim Key As Object
      
      If (MyTable.Count = 0) Then
           MessageBox.Show("The HashTable is empty")
      Else
           MessageBox.Show("Accessing keys property to return keys collection")
           MyKeys = MyTable.Keys()
      
           For Each Key In MyKeys
                MessageBox.Show(Key.ToString)
           Next
      End If 
      							
      ce code déclare une variable de type IDictionaryEnumerator et appelle la méthode GetEnumerator de la collection de table de hachage. Avec l' énumérateur renvoyé, le code énumère les éléments de la collection et utilise la méthode de clés de la table de hachage pour énumérer les clés.
  11. Dans les étapes suivantes, utilisez la méthode Clear pour effacer la table de hachage .
    1. Ajouter un contrôle bouton à Form1 et modifiez la propriété à supprimer .
    2. Double-cliquez sur le bouton et collez le code suivant dans l'événement Button5_Click :
      MyTable.Clear()
      MessageBox.Show("HashTable is now empty")
      						
  12. Suivez ces étapes pour générer et exécuter l'application :
    1. Cliquez sur Ajouter des éléments . Notez que trois objets Person sont ajoutés à la collection de table de hachage.
    2. Cliquez sur Récupérer les éléments . Notez que l'indexeur obtient les éléments de la collection de table de hachage. Les trois ajoutées les éléments sont affichés.
    3. Cliquez sur Supprimer article . Notez que l'article dans l'emplacement de clé « Berge » est supprimée.
    4. Cliquez sur énumérer . Notez que IDictionaryEnumerator énumère les éléments de la collection de table de hachage.
    5. Cliquez sur Supprimer . Notez que tous les éléments sont supprimés de la collection de table de hachage.
Remarque : les exemples de sociétés, organisations, produits, noms de domaine, adresses de messagerie, logos, personnes, lieux et événements mentionnés ici sont fictifs. Aucune association avec toute société réels, organisation, produit, nom de domaine, adresse de messagerie, logo, personne, lieux ou événements est destinée ou fortuite et involontaire.

Propriétés

Numéro d'article: 307933 - Dernière mise à jour: mercredi 6 décembre 2006 - Version: 3.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
Mots-clés : 
kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB307933 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 307933
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com