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

文章翻譯 文章翻譯
文章編號: 307933 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文提供 HashTable 集合的相關資訊。因為雜湊不需要昂貴搜尋資料的擷取資料,您可以使用雜湊來有效地擷取資料。雜湊找不到資料的使用金鑰本身的值。

基底類別庫提供,以使您不需要程式碼的雜湊資料表,System.Collections 命名空間中定義的 HashTable 類別。

若要建置範例的步驟

HashTable 集合會儲存 索引鍵 (數值) 組,並使用 金鑰 雜湊和取得儲存位置。金鑰 是不變,而在 HashTable 中不能有重複的項目。這個範例使用簡單的 類別的幾個執行個體將儲存在 HashTable。最後一個名稱當作 索引鍵
  1. 開啟 Microsoft Visual Studio.NET 或 Microsoft Visual Studio 2005 並在 Visual Basic.NET 或 Visual Basic 2005 中建立 Windows 應用程式專案。Form1 是根據預設值加入至專案。
  2. 在 [方案總管] 中以滑鼠右鍵按一下專案名稱,並指向 [新增,然後按一下 [加入類別] 來將 類別 模組。類別 1 加入至專案上,根據預設值。
  3. 在 [加入新項目] 對話方塊中,按一下 [開啟舊檔]。

    附註在 Visual 的 Studio 2005 中按一下 [新增 代替 開啟舊檔]。
  4. 在 [類別 1] 模組中任何程式碼取代下列程式碼:
    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物件 類別來傳回 FnameLname 串連在一起。
  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. 下列步驟中使用 [將三個 人員 物件新增至 Hashtabletry-catch 區塊中的 [Hashtable 物件的 Add 方法]。在 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. Hashtable 物件提供索引子。在下列步驟以存取儲存在雜湊位置的值的 索引鍵 的索引。
    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. 在下列步驟使用 Remove 方法從 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 集合。列舉值 傳回,與程式碼列舉集合中項目,並使用 HashTable機碼 方法來列舉機碼。
  11. 下列步驟中使用 [清除] 方法來清除 HashTable
    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 - 上次校閱: 2006年12月6日 - 版次: 3.3
這篇文章中的資訊適用於:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
關鍵字:?
kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB307933 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本: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