1. 雜湊表(hashtable)簡述
在.net framework中,hashtable是system.collections命名空間提供的乙個容器,用於處理和表現類似keyvalue的鍵值對,其中key通常可用來快速查詢,同時key是區分大小寫;value用於儲存對應於key的值。hashtable中keyvalue鍵值對均為object型別,所以hashtable可以支援任何型別的keyvalue鍵值對.
2. 什麼情況下使用雜湊表
(1)某些資料會被高頻率查詢
(2)資料量大
(3)查詢字段包含字串型別
(4)資料型別不唯一
3.雜湊表的使用方法
雜湊表需要使用的namespace
usingsystem.collections;
using system.collections.generic;
雜湊表的基本操作:
//新增乙個keyvalue鍵值對:
hashtableobject.add(key,value);
//移除某個keyvalue鍵值對:
hashtableobject.remove(key);
//移除所有元素:
hashtableobject.clear();
//判斷是否包含特定鍵key:
hashtableobject.contains(key);
控制台程式例子:
usingsystem;
using system.collections; //
file使用hashtable時,必須引入這個命名空間
class
program
}
雜湊表中使用多種資料型別的例子:
usingsystem;
using
system.collections;
class
program
static
void
main()
}
當獲取雜湊表中資料時,如果型別宣告的不對,會出現invalidcastexception錯誤。使用as-statements可以避免該錯誤。
usingsystem;
using
system.collections;
using
system.io;
class
program
//轉換失敗,獲取的值為null,但不會丟擲錯誤。
streamreader reader = hashtable[100] as
streamreader;
if (reader == null
)
//也可以直接獲取object值,再做判斷
object value2 = hashtable[100
];
if (value2 is
string
)
}}
4. 遍歷雜湊表
遍歷雜湊表需要用到dictionaryentry object,**如下:
for(dictionaryentry de in ht) //ht為乙個hashtable例項
遍歷鍵
foreach (int key inhashtable.keys)
遍歷值
foreach (string value inhashtable.values)
5.對雜湊表進行排序
對雜湊表按key值重新排列的做法:
arraylist akeys=newarraylist(ht.keys);
akeys.sort();
//按字母順序進行排序
foreach(string key in
akeys)
6. 雜湊表的效率
system.collections下的雜湊表(hashtable)和system.collections.generic下的字典(dictionary)都可用作lookup table,下面比較一下二者的執行效率。
stopwatch sw = newstopwatch();
hashtable hashtable = new
hashtable();
dictionary
dictionary = new dictionary();
int countnum = 1000000
;sw.start();
for (int i = 0; i < countnum; i++)
sw.stop();
console.writeline(sw.elapsedmilliseconds);
//輸出: 744
sw.restart();
for (int i = 0; i < countnum; i++)
sw.stop();
console.writeline(sw.elapsedmilliseconds);
//輸出: 489
sw.restart();
for (int i = 0; i < countnum; i++)
sw.stop();
console.writeline(sw.elapsedmilliseconds);
//輸出: 245
sw.restart();
for (int i = 0; i < countnum; i++)
sw.stop();
console.writeline(sw.elapsedmilliseconds);
//輸出: 192
由此可見,新增資料時hashtable快。頻繁呼叫資料時dictionary快。
結論:dictionary是泛型的,當k或v是值型別時,其速度遠遠超過hashtable。
C 中的雜湊表 Hashtable 應用
一.雜湊表 hashtable 簡述 在.net framework中,hashtable是system.collections命名空間提供的乙個容器,用於處理和表現類似key value的鍵值對,其中key通常可用來快速查詢,同時key是區分大小寫 value用於儲存對應於key的值。hashta...
C 中的雜湊表 Hashtable 應用
一.雜湊表 hashtable 簡述 在.net framework中,hashtable是system.collections命名空間提供的乙個容器,用於處理和表現類似key value的鍵值對,其中key通常可用來快速查詢,同時key是區分大小寫 value用於儲存對應於key的值。hashta...
hash table 雜湊表(雜湊表)
hash table 也叫雜湊表。涉及到雜湊函式 雜湊衝突處理的問題。雜湊函式是雜湊表的關鍵,是用來從值到雜湊表索引 存放位置 的對映。比如 要存放乙個學校學生的姓名,他們是amanda,jack,andy,tom,bob,black等等500個人。我們可以設計乙個雜湊表,容量為500,來存放這些學...