HOW TO: Lavorare con l'insieme HashTable in Visual Basic .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 307933 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo è stato precedentemente pubblicato con il codice di riferimento I307933
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo sono contenute informazioni sull'insieme HashTable. Poiché l'hash elimina la necessità di effettuare costose ricerche per recuperare i dati, è possibile servirsene per rendere più efficiente il recupero. L'hash impiega il valore della chiave in sé per individuare i dati.

Le librerie di classi base contengono una classe HashTable, definita nello spazio dei nomi System.Collections, con la quale non è necessario scrivere codice per le tabelle hash.

Procedura per compilare il progetto di esempio

Nell'insieme HashTable è memorizzata una coppia (chiave, valore) e la chiave viene utilizzata per l'hash e il recupero del percorso di archiviazione. La chiave è immutabile e per essa non possono esistere voci duplicate in HashTable. In questo esempio vengono impiegate varie istanze di una semplice classe Person da memorizzare in una HashTable. L'ultimo nome è utilizzato come chiave.
  1. Aprire Microsoft Visual Studio .NET e creare un nuovo progetto Applicazione Windows in Visual Basic .NET. In base all'impostazione predefinita verrà aggiunto al progetto il Form1.
  2. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto, scegliere Aggiungi, quindi Aggiungi classe per aggiungere un modulo di classe. In base all'impostazione predefinita al progetto verrà aggiunto Class1.
  3. Scegliere Apri nella finestra di dialogo Aggiungi nuovo elemento.
  4. Sostituire il codice esistente nel modulo Class1 con il seguente codice:
    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 dispone di un costruttore che impiega i parametri FirstName e LastName e li assegna alle variabili locali. La funzione ToString esegue l'override di ToString della classe Object in modo che Fname e Lname vengano restituiti concatenati.
  5. Aggiungere la seguente istruzione Imports in Form1.vb all'inizio del modulo di codice:
    Imports System.Collections
  6. Creare un oggetto Hashtable a livello di form e dichiarare tre variabili di tipo Person. Aggiungere alla classe Form1 il seguente codice:
    Dim MyTable As New Hashtable()
    
    'For simplicity, create three Person objects to add to the HashTable collection.
    
    Dim Person1, Person2, Person3 As Person
  7. Nella seguente procedura utilizzare il metodo Add dell'oggetto Hashtable per aggiungere tre oggetti Person a Hashtable in un blocco try-catch. Il blocco try-catch intercetta l'eccezione e visualizza un messaggio se esistono chiavi duplicate.
    1. Posizionare un controllo Button sul Form1 e modificare la proprietà Text in Aggiungi elementi.
    2. Fare doppio clic sul pulsante per aprire la relativa finestra del codice, quindi incollare nell'evento Button1_Click il seguente codice:
      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'oggetto Hashtable fornisce un indicizzatore. Nella seguente procedura effettuare l'indicizzazione con la chiave per accedere al valore memorizzato nel percorso con hash.
    1. Aggiungere un controllo Button a Form1 e modificare la proprietà Text in Recupera elementi.
    2. Fare doppio clic sul pulsante e incollare nell'evento Button2_Click il seguente codice:
      '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. Nella seguente procedura utilizzare il metodo Remove per rimuovere un singolo elemento dall'insieme HashTable:
    1. Aggiungere un controllo Button a Form1 e modificare la proprietà Text in Rimuovi elemento.
    2. Fare doppio clic sul pulsante e incollare nell'evento Button3_Click il seguente codice:
      '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. Nella procedura seguente enumerare gli elementi memorizzati nell'insieme HashTable.
    1. Aggiungere un controllo Button a Form1 e modificare la proprietà Text in Enumera.
    2. Fare doppio clic sul pulsante e incollare nell'evento Button4_Click il seguente codice:
      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
      Con questo codice viene dichiarata una variabile di tipo IDictionaryEnumerator e chiamato il metodo GetEnumerator dell'insieme HashTable. Con l'oggetto Enumerator restituito il codice enumera gli elementi che fanno parte dell'insieme e utilizza il metodo Keys di HashTable per l'enumerazione delle chiavi.
  11. Nella seguente procedura utilizzare il metodo Clear per cancellare HashTable.
    1. Aggiungere un controllo Button a Form1 e modificare la proprietà Text in Cancella.
    2. Fare doppio clic sul pulsante e incollare nell'evento Button5_Click il seguente codice:
      MyTable.Clear()
      MessageBox.Show("HashTable is now empty")
  12. Attenersi alle seguenti procedure per generare ed eseguire l'applicazione:
    1. Scegliere il pulsante Aggiungi elementi. Si noti che all'insieme HashTable vengono aggiunti tre oggetti Person.
    2. Scegliere Recupera elementi. Si noti che l'indicizzatore recupera gli elementi nell'insieme HashTable. Vengono visualizzati i tre elementi appena aggiunti.
    3. Scegliere il pulsante Rimuovi elemento. Si noti che l'elemento nel percorso della chiave "Berge" viene eliminato.
    4. Scegliere Enumera. Si noti che IDictionaryEnumerator enumera gli elementi nell'insieme HashTable.
    5. Scegliere Cancella. Si noti che tutti gli elementi vengono cancellati dall'insieme HashTable.
NOTA: i nomi di aziende, organizzazioni, prodotti, domini, gli indirizzi di posta elettronica, i loghi, i nomi di persone, luoghi e gli eventi utilizzati in questo esempio sono di fantasia. Eventuali corrispondenze con società, organizzazioni, prodotti, nomi di dominio, indirizzi di posta elettronica, loghi, persone, luoghi o eventi reali non sono intenzionali e non devono essere considerate tali.

Proprietà

Identificativo articolo: 307933 - Ultima modifica: sabato 13 aprile 2002 - Revisione: 1.0
Le informazioni in questo articolo si applicano a
  • Microsoft Visual Basic .NET 2002 Standard Edition
Chiavi: 
kbhowto kbhowtomaster KB307933
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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