在C#中應(yīng)用哈希表(Hashtable)
2024-07-21 02:19:04
供稿:網(wǎng)友
一、哈希表(hashtable)簡述
在.net framework中,hashtable是system.collections命名空間提供的一個(gè)容器,用于處理和表現(xiàn)類似key/value的鍵值對(duì),其中key通常可用來快速查找,同時(shí)key是區(qū)分大小寫;value用于存儲(chǔ)對(duì)應(yīng)于key的值。hashtable中key/value鍵值對(duì)均為object類型,所以hashtable可以支持任何類型的key/value鍵值對(duì).
二、哈希表的簡單操作
在哈希表中添加一個(gè)key/value鍵值對(duì):hashtableobject.add(key,value);
在哈希表中去除某個(gè)key/value鍵值對(duì):hashtableobject.remove(key);
從哈希表中移除所有元素: hashtableobject.clear();
判斷哈希表是否包含特定鍵key: hashtableobject.contains(key);
下面控制臺(tái)程序?qū)陨纤胁僮鳎?br> using system;
using system.collections; //使用hashtable時(shí),必須引入這個(gè)命名空間
class hashtable
{
public static void main()
{
hashtable ht=new hashtable(); //創(chuàng)建一個(gè)hashtable實(shí)例
ht.add("e","e");//添加key/value鍵值對(duì)
ht.add("a","a");
ht.add("c","c");
ht.add("b","b");
string s=(string)ht["a"];
if(ht.contains("e")) //判斷哈希表是否包含特定鍵,其返回值為true或false
console.writeline("the e key:exist");
ht.remove("c");//移除一個(gè)key/value鍵值對(duì)
console.writeline(ht["a"]);//此處輸出a
ht.clear();//移除所有元素
console.writeline(ht["a"]); //此處將不會(huì)有任何輸出
}
}
三,遍歷哈希表
遍歷哈希表需要用到dictionaryentry object,代碼如下:
foreach(dictionaryentry de in ht) //ht為一個(gè)hashtable實(shí)例
{
console.writeline(de.key);//de.key對(duì)應(yīng)于key/value鍵值對(duì)key
console.writeline(de.value);//de.key對(duì)應(yīng)于key/value鍵值對(duì)value
}
四,對(duì)哈希表進(jìn)行排序
對(duì)哈希表進(jìn)行排序在這里的定義是對(duì)key/value鍵值對(duì)中的key按一定規(guī)則重新排列,但是實(shí)際上這個(gè)定義是不能實(shí)現(xiàn)的,因?yàn)槲覀儫o法直接在hashtable進(jìn)行對(duì)key進(jìn)行重新排列,如果需要hashtable提供某種規(guī)則的輸出,可以采用一種變通的做法:
arraylist akeys=new arraylist(ht.keys); //別忘了導(dǎo)入system.collections
akeys.sort(); //按字母順序進(jìn)行排序
foreach(string skey in akeys)
{
console.write(skey + ":");
console.writeline(ht[skey]);//排序后輸出
}