Como trabalhar com a colecção HashTable no Visual Basic .NET ou no Visual Basic 2005

Traduções de Artigos Traduções de Artigos
Artigo: 307933 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo fornece informações sobre recolha HashTable. Porque hash elimina a necessidade para procura dispendiosa de dados obter os dados, pode utilizar a criação de algoritmos hash para obter uma forma eficiente dados. Criação de algoritmos hash utiliza o valor da chave própria para localizar os dados.

As bibliotecas de classe base oferecem uma classe HashTable definido no espaço de nomes System.Collections para que não sejam necessários para as suas próprias tabelas hash de código.

Passos para criar o exemplo

Uma colecção de HashTable armazena um par (chave, valor) e utiliza a chave hash e obter a localização de armazenamento. A chave é imutável e não pode ter entradas duplicadas na HashTable . Este exemplo utiliza várias instâncias de uma classe de utilizador simples para armazenar um HashTable . O último nome é utilizado como chave .
  1. Abra o Microsoft Visual Studio .NET ou o Microsoft Visual Studio 2005 e criar um projecto de aplicação do Windows no Visual Basic .NET ou do Visual Basic 2005. Form1 é adicionado ao projecto por predefinição.
  2. No Solution Explorer, clique com o botão direito do rato no nome do projecto, aponte para Adicionar e, em seguida, clique em Adicionar classe para adicionar um módulo de classe . Aula1 é adicionado ao projecto por predefinição.
  3. Na caixa de diálogo Adicionar novo item , clique em Abrir .

    Nota No Visual Studio 2005, clique em Adicionar em vez de Abrir .
  4. Substitua qualquer código no módulo Aula1 o seguinte código:
    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
    						
    a classe de utilizador tem um construtor que utiliza os parâmetros de nome e Apelido e atribui estes parâmetros para as variáveis locais. A função ToString substitui ToString da classe de objecto para regressar Fname e Lname concatenado em conjunto.
  5. Em Form1.vb, adicione a seguinte instrução de importação no início do módulo de código:
    Imports System.Collections
    					
  6. Criar um objecto de Hashtable nível do formulário e declarar três variáveis do tipo contacto . Adicione o seguinte código à 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. Nos passos seguintes, utilize o método Add do objecto Hashtable para adicionar três objectos de utilizador para Hashtable num bloco try-catch . O bloco try-catch identificou a excepção e apresenta uma mensagem se existirem chaves duplicadas.
    1. Colocar um controlo de botão no Form1 e altere a propriedade de texto para Adicionar elementos .
    2. Faça duplo clique no botão para abrir a janela de código e, cole o seguinte código no evento 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. O objecto Hashtable fornece um indexador. Nos passos seguintes, índice com a chave para aceder ao valor armazenado na localização hash.
    1. Adicione um controlo de botão ao Form1 e altere a propriedade de texto para Obter itens .
    2. Faça duplo clique no botão e cole o seguinte código no evento 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. Nos passos seguintes, utilize o método Remove para remover um único item da coleção HashTable:
    1. Adicione um controlo de botão ao Form1 e altere a propriedade de texto para Remover o item .
    2. Faça duplo clique no botão e cole o seguinte código no evento 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. Nos passos seguintes, enumere os itens que são armazenados na colecção HashTable.
    1. Adicione um controlo de botão ao Form1 e altere a propriedade de texto para Enumerate .
    2. Faça duplo clique no botão e cole o seguinte código no evento 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 
      							
      este código indica uma variável do tipo IDictionaryEnumerator e chama o método GetEnumerator da colecção HashTable. Com o enumerador devolvido, o código enumera pelos itens na colecção e utiliza o método chaves do HashTable enumerar através das chaves.
  11. Nos passos seguintes, utilize o método Limpar para limpar HashTable .
    1. Adicione um controlo de botão ao Form1 e altere a propriedade de texto para Limpar .
    2. Faça duplo clique no botão e cole o seguinte código no evento Button5_Click :
      MyTable.Clear()
      MessageBox.Show("HashTable is now empty")
      						
  12. Siga estes passos para criar e executar a aplicação:
    1. Clique em Adicionar itens . Note que três objectos de utilizador são adicionados à colecção HashTable.
    2. Clique em obter itens . Tenha em atenção que o indexador obtém itens na colecção HashTable. As três recentemente adicionados os itens são apresentados.
    3. Clique em Remover produto . Note que o item na localização "Berge" chave é eliminado.
    4. Clique em enumerar . Tenha em atenção que IDictionaryEnumerator enumera pelos itens na colecção HashTable.
    5. Clique em Limpar . Tenha em atenção que todos os itens estão desmarcados da colecção HashTable.
Nota : os exemplos de empresas, organizações, produtos, nomes de domínio, endereços de correio electrónico, logótipos, pessoas, locais e eventos aqui mencionados são fictícios. Nenhuma associação com qualquer empresa, organização, produto, nome de domínio, endereço de correio electrónico, logótipo, pessoa, locais ou eventos é intencional ou deve ser inferida.

Propriedades

Artigo: 307933 - Última revisão: 6 de dezembro de 2006 - Revisão: 3.3
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palavras-chave: 
kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB307933 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 307933

Submeter comentários

 

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