Al momento sei offline in attesa che la connessione Internet venga ristabilita

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

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I307933
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.

Torna all'inizio

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 FunctionEnd 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 inAggiungi 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 inRecupera 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 inRimuovi 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 inEnumera.
    2. Fare doppio clic sul pulsante e incollare nell'evento Button4_Click il seguente codice:
      Dim Enumerator As IDictionaryEnumeratorEnumerator = 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 WhileEnd IfDim MyKeys As ICollectionDim Key As ObjectIf (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)     NextEnd 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 inCancella.
    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.

Torna all'inizio
try...catch
Proprietà

ID articolo: 307933 - Ultima revisione: 04/13/2002 13:26:00 - Revisione: 1.0

Microsoft Visual Basic .NET 2002 Standard Edition

  • kbhowto kbhowtomaster KB307933
Feedback
; " src="https://c1.microsoft.com/c.gif?DI=4050&did=1&t=">