Cómo trabajar con la colección HashTable en Visual Basic .NET o en Visual Basic 2005

Seleccione idioma Seleccione idioma
Id. de artículo: 307933 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E307933
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se proporciona información acerca de la colección HashTable. Puesto que las operaciones hash eliminan la necesidad de realizar costosas búsquedas para recuperar datos, permiten realizar dicha acción de forma eficiente. Las operaciones hash usan el valor de la propia clave para localizar los datos.

Base Class Libraries ofrece una clase HashTable que se define en el espacio de nombres System.Collections de modo que no tenga que codificar sus propias tablas hash.

Pasos para generar el ejemplo

Una colección HashTable almacena un par (clave, valor) y usa la clave para realizar la operación hash y obtener la ubicación de almacenamiento. La clave es inmutable y no puede tener entradas duplicadas en la colección HashTable. En este ejemplo se usan varias instancias de una única clase Person para almacenarse en una HashTable. El apellido se usa como clave.
  1. Abra Microsoft Visual Studio .NET o Microsoft Visual Studio 2005, y cree un proyecto de aplicación de Windows en Visual Basic .NET o Visual Basic 2005. Form1 se agrega al proyecto de forma predeterminada.
  2. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el nombre del proyecto, seleccione Agregar y haga clic en Agregar clase para agregar un módulo Class. Class1 se agrega al proyecto de forma predeterminada.
  3. En el cuadro de diálogo Agregar nuevo elemento, haga clic en Abrir.

    Nota: en Visual Studio 2005, haga clic en Agregar en lugar de en Abrir.
  4. Reemplace el código del módulo Class1 con el siguiente:
    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 clase Person tiene un constructor que acepta los parámetros FirstName y LastName, y asigna estos parámetros a las variables locales. La función ToString invalida a ToString de la clase Object para devolver Fname y Lname concatenados.
  5. En Form1.vb, agregue la instrucción Imports siguiente al principio del módulo de código:
    Imports System.Collections
    					
  6. Crea un objeto Hashtable de nivel de formulario y declare tres variables de tipo Person. Agregue el código siguiente a la clase Form1:
    Dim MyTable As New Hashtable()
    
    'Por simplicidad, se crean tres objetos Person para agregar a la colección HashTable.
    
    Dim Person1, Person2, Person3 As Person  
    					
  7. En los pasos siguientes, use el método Add del objeto Hashtable para agregar tres objetos Person al objeto Hashtable en un bloque try-catch. El bloque try-catch captura la excepción y muestra un mensaje si existen claves duplicadas.
    1. Coloque un control Button en Form1 y cambie la propiedad Text por Agregar elementos.
    2. Haga doble clic en el botón para abrir su ventana Código y pegue el código siguiente en el evento Button1_Click:
      Person1 = New Person("Karen", "Berge") Person2 = New Person("David", "Campbell") Person3 = New Person("Jim", "Kim")
      
      'El método Add acepta la clave como primer parámetro y el valor como segundo.
      
      Try MyTable.Add(Person1.Lname, Person1) MyTable.Add(Person2.Lname, Person2) MyTable.Add(Person3.Lname, Person3) Catch ae As ArgumentException MessageBox.Show("Clave duplicada") End Try
      						
  8. El objeto Hashtable proporciona un indizador. En los pasos siguientes se usa la clave como índice para tener acceso al valor que se almacena en la ubicación de hash.
    1. Agregue un control Button en Form1 y cambie la propiedad Text por Obtener elementos.
    2. Haga doble clic en el botón y pegue el código siguiente en el eventoButton2_Click:
      'Use el indicador de la clase Hashtable para recuperar los objetos. El indicador acepta la 'clave como parámetro y tiene acceso a ella con la ubicación de hash.
              
      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("La clave no está en Hashtable") End Try
      						
  9. En los pasos siguientes, use el método Remove para quitar un único elemento de la colección HashTable:
    1. Agregue un control Button en Form1 y cambie la propiedad Text por Quitar elemento.
    2. Haga doble clic en el botón y pegue el código siguiente en el evento Button3_Click:
      'Usar la propiedad Count. If (MyTable.Count = 0) Then MessageBox.Show("No hay elementos en HashTable") Else MessageBox.Show("El recuento antes de quitar un elemento es" & " " & MyTable.Count) MessageBox.Show("Quitando el valor almacenado en el valor de la clave (Berge)") 'Quitar el objeto que se almacena en el valor de la clave Person1.Lname. MyTable.Remove(Person1.Lname) End If
      						
  10. En los pasos siguientes se enumeran los elementos que se almacenan en la colección HashTable.
    1. Agregue un control Button en Form1 y cambie la propiedad Text por Enumerar.
    2. Haga doble clic en el botón y pegue el código siguiente en el evento Button4_Click:
      Dim Enumerator As IDictionaryEnumerator Enumerator = MyTable.GetEnumerator()
      
      If (MyTable.Count = 0) Then MessageBox.Show("HashTable está vacía") Else MessageBox.Show("Enumerando la colección HashTable") 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("HashTable está vacía") Else MessageBox.Show("Teniendo acceso a la propiedad keys para devolver la colección keys") MyKeys = MyTable.Keys()
      
           For Each Key In MyKeys MessageBox.Show(Key.ToString) Next End If 
      							
      En este código se declara una variable de tipo IDictionaryEnumerator y se llama al método GetEnumerator de la colección HashTable. Con el Enumerator devuelto, el código enumera los elementos de la colección y usa el método Keys de HashTable para enumerar las claves.
  11. En los pasos siguientes, use el método Clear para borrar la HashTable.
    1. Agregue un control Button en Form1 y cambie la propiedad Text por Borrar.
    2. Haga doble clic en el botón y pegue el código siguiente en el evento Button5_Click:
      MyTable.Clear() MessageBox.Show("HashTable está vacía ahora")
      						
  12. Siga estos pasos para generar y ejecutar la aplicación:
    1. Haga clic en Agregar elementos. Observe que los tres objetos Person se agregan a la colección HashTable.
    2. Haga clic en Obtener elementos. Observe que el indizador obtiene los elementos de la colección HashTable. Se muestran los tres elementos recién agregados.
    3. Haga clic en Quitar elemento. Observe que se elimina el elemento que hay en la ubicación de la clave "Berge".
    4. Haga clic en Enumerar. Observe que IDictionaryEnumerator enumera los elementos de la colección HashTable.
    5. Haga clic en Borrar. Observe que todos los elementos se borran de la colección HashTable.
NOTA: los nombres de ejemplo de compañías, organizaciones, productos, nombres de dominio, direcciones de correo electrónico, logotipos, personas, lugares y acontecimientos aquí descritos son ficticios. No se pretende indicar ni debe deducirse ninguna asociación con compañías, organizaciones, productos, nombres de dominio, direcciones de correo electrónico, logotipos, personas, lugares o acontecimientos reales.

Propiedades

Id. de artículo: 307933 - Última revisión: jueves, 21 de junio de 2007 - Versión: 3.6
La información de este artículo se refiere a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palabras clave: 
kbvs2005swept kbvs2005applies kbhowtomaster KB307933

Enviar comentarios

 

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