Как работать с коллекцией HashTable в Visual Basic.NET или Visual Basic 2005

Переводы статьи Переводы статьи
Код статьи: 307933 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

Эта статья содержит сведения о коллекции HashTable. Поскольку хеширования исключает необходимость дорогостоящих поиска данных для извлечения данных, можно использовать хеширование эффективно извлекать данные. Хеширование использует значение самого ключа для поиска данных.

Предложить библиотеки базовых классов Хеш-таблица класс, определенный в System.Collections пространства имен таким образом, чтобы код таблицы хэша не требуется.

Шаги для построения примера

Коллекции HashTable хранятся (Ключ, значение) пара и использование Ключ для хэширования и получить место хранения. В Ключ является постоянным и не может содержать повторяющиеся записи в Хеш-таблица. В этом примере используется несколько экземпляров простого Лицо класс для хранения в Хеш-таблица. Последнее имя используется в качестве Ключ.
  1. Откройте Microsoft Visual Studio.NET или Microsoft Visual Studio 2005 и создайте проект приложения Windows в Visual Basic.NET или Visual Basic 2005. По умолчанию в проект добавляется Form1.
  2. В обозревателе решений щелкните правой кнопкой мыши имя проекта, в меню Добавить, а затем нажмите кнопку Добавление класса Чтобы добавить Класс модуль. По умолчанию в проект добавляется Class1.
  3. В Добавление нового элемента диалоговое окно, нажмите кнопку Открыть.

    Примечание В Visual Studio 2005 нажмите кнопку Добавить Вместо Открыть.
  4. Замените код в Class1 модуль следующий код:
    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
    						
    В Лицо класс имеет один конструктор, принимающий «Имя» и Фамилия параметры и назначает эти параметры для локальных переменных. В ToString функция переопределения ToString из Объект класс для возврата Fname и Lname объединенные вместе.
  5. В Form1.vb добавьте следующие строки Импортируемые пространства имен оператор в начало модуля кода:
    Imports System.Collections
    					
  6. Создайте форму на уровне Хеш-таблица объект и объявите три переменные типа Лицо. Добавьте следующий код в класс 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. На следующих этапах использования Добавить метод Хеш-таблица объект для добавления трех Лицо объекты Хеш-таблица в try-catch блок. В try-catch блок перехватывает исключение и выводит сообщение, если существуют дублирующиеся ключи.
    1. Место Кнопка элемент управления на форму Form1 и измените Текст Свойство Добавление элементов.
    2. Дважды щелкните кнопку, чтобы открыть ее окно кода и вставьте следующий код в 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. В Хеш-таблица объект предоставляет индексатор. В следующих шагах индекса с Ключ для доступа к значению, которое сохраняется по адресу хэшированных.
    1. Добавить Кнопка элемент управления в форму Form1 и измените Текст Свойство Получение элементов.
    2. Дважды щелкните кнопку и вставьте следующий код в 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. На следующих этапах использования Удалить метод, чтобы удалить элемент из коллекции HashTable.
    1. Добавить Кнопка элемент управления в форму Form1 и измените Текст Свойство Удалить элемент.
    2. Дважды щелкните кнопку и вставьте следующий код в 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. В следующих шагах перечисления элементов, хранящихся в коллекции HashTable.
    1. Добавить Кнопка элемент управления в форму Form1 и измените Текст Свойство Перечислить.
    2. Дважды щелкните кнопку и вставьте следующий код в 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 
      							
      Этот код объявляет переменную типа IDictionaryEnumerator и вызывает GetEnumerator метод коллекции HashTable. С помощью Перечислитель Перечисление элементов в коллекции возвращены, код и использует Ключи метод Хеш-таблица для перечисления ключей.
  11. На следующих этапах использования Очистить метод, чтобы удалить Хеш-таблица.
    1. Добавить Кнопка элемент управления в форму Form1 и измените Текст Свойство Очистить.
    2. Дважды щелкните кнопку и вставьте следующий код в Button5_Click событие:
      MyTable.Clear()
      MessageBox.Show("HashTable is now empty")
      						
  12. Выполните следующие действия, чтобы построить и запустить приложение.
    1. Нажмите кнопку Добавление элементов. Обратите внимание, что три Лицо объекты добавляются к коллекции HashTable.
    2. Нажмите кнопку Получение элементов. Обратите внимание на то, что индексатор получает элементы в коллекции HashTable. Три новые добавленные элементы отображаются.
    3. Нажмите кнопку Удалить элемент. Обратите внимание, что элемент в разделе реестра «berge» будет удален.
    4. Нажмите кнопку Перечислить. Обратите внимание, что IDictionaryEnumerator Перечисление элементов в коллекции HashTable.
    5. Нажмите кнопку Очистить. Обратите внимание на то, что все элементы удаляются из коллекции HashTable.
ПРИМЕЧАНИЕ: Компаний, организаций, продуктов, доменных имен, адресов электронной почты, эмблемы, людей, мест и события являются вымышленными. С реальными, организации, продукта, доменное имя, адрес электронной почты, эмблемы, лица, мест или событий является случайными и непреднамеренными.

Свойства

Код статьи: 307933 - Последний отзыв: 6 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Ключевые слова: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB307933 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:307933

Отправить отзыв

 

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