如何使用 HashTable 集合在 Visual Basic.net 中或 Visual Basic 2005 中

文章翻译 文章翻译
文章编号: 307933 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文提供了有关 HashTable 集合的信息。由于哈希不需要的数据的代价高昂搜索来检索数据,您可以使用哈希准确且高效地检索数据。哈希来查找数据的使用密钥本身的值。

在基类库提供 HashTableSystem.Collections 命名空间中定义的以便您不需要编写您自己的哈希表的代码。

生成示例的步骤

HashTable 集合存储 值中的密钥) 的对,并使用 密钥 哈希并获得存储位置。密钥 是不可变的并在 HashTable 中不能有重复项。此示例使用存储在一个 HashTable人员 的简单类的几个实例。作为 密钥 使用最后一个名称。
  1. 打开 Microsoft Visual Studio.net 或 Microsoft 可 Visual Studio 的 2005年并创建一个 Windows 应用程序项目在 Visual Basic.net 中或 Visual Basic 2005 中。默认情况下,Form1 将添加到项目。
  2. 在解决方案资源管理器中,右击项目名称,指向 添加,然后单击添加 模块 添加类。默认情况下将 Class1 添加到项目。
  3. 添加新项 对话框中单击 打开

    注意可视有关 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 函数重写从返回 FnameLname 串联在一起的 对象 类的 ToString
  5. 在 Form1.vb,将下面的 Imports 语句添加到代码模块的顶部:
    Imports System.Collections
    					
  6. 创建窗体级 Hashtable 对象,和声明类型 人员 的三个变量。下面的代码添加到 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 块中的 哈希表 中添加三个 用户 对象的 哈希表 对象的 Add 方法。try-catch 块捕获该异常,并显示一条消息,如果存在重复键。
    1. 将在 Form1,上的一个 按钮 控件,然后将 Text 属性更改到 添加的元素
    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. Hashtable 对象提供了一个索引器。在下面的步骤使用 访问存储在哈希的位置的值的索引。
    1. 将一个 按钮 控件添加到 Form1,并更改为 获取项Text 属性。
    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. 在下面的步骤,请使用 Remove 方法从 HashTable 集合中移除某一项:
    1. 将一个 按钮 控件添加到 Form1,并将 Text 属性更改到 删除的项
    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 集合的方法。返回该 枚举器,用代码枚举通过集合中项,并使用 HashTable 方法枚举键。
  11. 在下面的步骤中使用 Clear 方法清除 HashTable
    1. 将一个 按钮 控件添加到 Form1,并将 文本 属性更改为 清除
    2. 双击按钮,然后将以下代码粘贴到 Button5_Click 事件中:
      MyTable.Clear()
      MessageBox.Show("HashTable is now empty")
      						
  12. 请按照下列步骤以生成并运行该应用程序:
    1. 单击 添加项目。请注意三个 用户 对象添加到 HashTable 集合。
    2. 单击 获取项。请注意该索引器获取 HashTable 集合内的项。三个新添加的项目会显示。
    3. 单击 删除项目。请注意在"高"的关键位置项已被删除。
    4. 单击 枚举。请注意 IDictionaryEnumerator 枚举通过 HashTable 集合内的项。
    5. 单击 清除。请注意从 HashTable 集合中清除所有项目。
: 的示例公司、 组织、 产品、 域名、 电子邮件地址、 徽标、 人员、 位置和此处所描述的事件均属虚构。 与任何真实的公司、 组织、 产品、 域名、 电子邮件地址、 徽标、 人员、 位置或事件没有意指,也应进行这方面的推断。

属性

文章编号: 307933 - 最后修改: 2006年12月6日 - 修订: 3.3
这篇文章中的信息适用于:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 标准版
  • Microsoft Visual .NET 2002 标准版
关键字:?
kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB307933 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 307933
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

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