2009年9月16日 星期三

HashTable VS HybridDictionary(M03)

使用HashTable
  • Key/Value成對出現的資料結構。
  • 項目存放的順序,和加入的先後次序無關,內部項目排列順序是根據HashCode排序。
  • 索引鍵可以是文字或數值。
=>因為Hashtable中項目沒有按新增的順序排列,因此新增、行除項目的方法只能使用Add、Remove方法。Clear可以清除所有項目

程式實作
Module Module1

Sub Main()
Dim ht As Hashtable = New Hashtable
ht("10") = "Mary"
ht("20") = System.DateTime.Now
ht("30") = 100

For Each o As DictionaryEntry In ht
Console.WriteLine("Key:{0}-->Value:{1}", o.Key.ToString, o.Value.ToString)
Next
ht.Remove("10")

End Sub

End Module

使用Hashtable的考量
  • 適用在變動程度高,以及不易變動資料上。當然由於Hashtable根據Hash Code排序,資料變動的程度高代表要額外花費計算hash值的成本。
  • 如果集合中項目少於10個,使用ListDictionary來存放Key/Value配對所成的集合,可得較佳的效能。
=====================================================
使用HybridDictionary
  • 位於System.Collections.Specialized命名空間之下
  • 集合中的項目需要Key/Value配對出現
  • 內部用來儲存資料的物件(項目少:使用ListDictionary;項目多:使用HashTable)
  • 適合在無法預期集合中的資料量時
  • 不適用在排序

沒有留言:

張貼留言