| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1641 人关注过本帖
标题:在C#中应用哈希表(Hashtable)
只看楼主 加入收藏
shan0yu
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2004-6-12
收藏
 问题点数:0 回复次数:8 
在C#中应用哈希表(Hashtable)

一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对.

二,哈希表的简单操作 在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value); 在哈希表中去除某个key/value键值对:HashtableObject.Remove(key); 从哈希表中移除所有元素: HashtableObject.Clear(); 判断哈希表是否包含特定键key: HashtableObject.Contains(key); 下面控制台程序将包含以上所有操作: using System; using System.Collections; //使用Hashtable时,必须引入这个命名空间

class hashtable { public static void Main() { Hashtable ht=new Hashtable(); //创建一个Hashtable实例 ht.Add("E","e");//添加key/value键值对 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");//移除一个key/value键值对 Console.WriteLine(ht["A"]);//此处输出a ht.Clear();//移除所有元素 Console.WriteLine(ht["A"]); //此处将不会有任何输出 } }

三,遍历哈希表 遍历哈希表需要用到DictionaryEntry Object,代码如下: for(DictionaryEntry de in ht) //ht为一个Hashtable实例 { Console.WriteLine(de.Key);//de.Key对应于key/value键值对key Console.WriteLine(de.Value);//de.Key对应于key/value键值对value }

四,对哈希表进行排序 对哈希表进行排序在这里的定义是对key/value键值对中的key按一定规则重新排列,但是实际上这个定义是不能实现的,因为我们无法直接在Hashtable进行对key进行重新排列,如果需要Hashtable提供某种规则的输出,可以采用一种变通的做法: ArrayList akeys=new ArrayList(ht.Keys); //别忘了导入System.Collections akeys.Sort(); //按字母顺序进行排序 for(string skey in akeys) { Console.Write(skey + ":"); Console.WriteLine(ht[skey]);//排序后输出 }

搜索更多相关主题的帖子: 哈希 Hashtable 应用 
2004-06-18 12:02
williamjack
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2004-6-17
收藏
得分:0 
你的C#去到什么程度了阿。好羡慕你啊。。。

…………………… 我有,我可以!!!
2004-06-18 22:41
shan0yu
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2004-6-12
收藏
得分:0 

大哥!这叫摘抄,哪有那么厉害

为了方便大家学习,所以找来放到一起!!以资参考!


不雨花尤落 无风絮自飞
2004-06-19 07:41
likefish
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2005-3-28
收藏
得分:0 
鼓励鼓励

/user/2004/09/05/7ab46c07.jpg" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://upload./user/2004/09/05/7ab46c07.jpg');}" onmousewheel="return imgzoom(this);" alt="" />
2005-03-29 11:30
leeteng
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2005-1-7
收藏
得分:0 
抄错了吧
for(DictionaryEntry de in ht) //ht为一个Hashtable实例
{
   Console.WriteLine(de.Key);//de.Key对应于key/value键值对key
   Console.WriteLine(de.Value);//de.Key对应于key/value键值对value
}
应该是
foreach(DictionaryEntry de in ht) //ht为一个Hashtable实例
{
   Console.WriteLine(de.Key);//de.Key对应于key/value键值对key
   Console.WriteLine(de.Value);//de.Key对应于key/value键值对value
}
2005-04-09 13:37
jacky
Rank: 1
等 级:新手上路
帖 子:104
专家分:0
注 册:2004-12-17
收藏
得分:0 
两个地方都就应是foreach
2005-04-11 15:52
fokin
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2005-3-25
收藏
得分:0 
老大,请问foreach是什么呀?!!!!~
呵呵 ~~~

我不是高手,我只是新手~!!
2005-04-13 11:02
幻风幻云
Rank: 1
等 级:新手上路
帖 子:762
专家分:0
注 册:2005-1-14
收藏
得分:0 

C#代码:public int LoopTest() { int s=0; int[] array={2,3,4,5,6,7,8,9}; for(int k=0;k<=7;k++) { s+=array[k]; }

foreach(int a in array) { s+=a; }

return s;

} 其中的for语句和foreach语句作用一样


2005-04-13 11:11
ziyoufeixiang
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-6-18
收藏
得分:0 

哈希表挺好的!!!

2006-06-19 19:23
快速回复:在C#中应用哈希表(Hashtable)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052503 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved