C#中HashTable的简单介绍
关于哈希表:
哈希表(Hash table),是根据关键码值(Key value)而直接进行访问的数据结构。它是表示集合和字典的另一种有效方法,提供了一种完全不同的存储和搜索方式,通过将关键码映射到表中某个位置来存储元素,然后根据关键码用同样的方式直接访问。当数据量很大且经常需要进行查询的时候,使用哈希表能减少查询时间。
HashTable的定义和方法
命名空间: System.Collections
常用属性:
属性名称 | 说明 |
---|---|
Count | 获取在HashTable中键值对的数目 |
Keys | 获取包含在Hashtable中键的集合 |
Values | 获取包含Hashtable中值的集合 |
常用方法:
方法名称 | 说明 |
---|---|
hashtable.Add(key,value) | 在哈希表中添加一个keyvalue键值对 |
hashtable.Remove(key) | 在哈希表中去除某个keyvalue键值对 |
hashtable.Clear() | 清空哈希表 |
hashtable.Contains(key) | 判断哈希表是否包含特定键key |
Hashtable hashtable = new Hashtable();//创建一个哈希表
//向表中增加元素
hashtable.Add("first", "金星");
hashtable.Add("second", "水星");
hashtable.Add("third", "地球");
hashtable.Add("fourth", "火星");
//属性检测
Console.WriteLine("表中键值对的个数:" + hashtable.Count);
Console.WriteLine("表中的键有:");
foreach(Object obj in hashtable.Keys)//遍历键
{
Console.Write(obj.ToString() + ' ');
}
Console.WriteLine();
foreach (Object obj in hashtable.Values)//遍历值
{
Console.Write(obj.ToString() + ' ');
}
Console.WriteLine();
//删除元素
hashtable.Remove("third");
//判断是否在表中
hashtable.Contains("fourth");
遍历哈希表:
1、DictionaryEntry Object方法:
//用DictionaryEntry遍历
foreach(DictionaryEntry de in hashtable)
{
Console.Write(de.Key);
Console.WriteLine(":" + de.Value);
}
2、用Hashtable.GetEnumerator()方法实现遍历:
//用GetEnumerator()方法遍历
IDictionaryEnumerator denumer = hashtable.GetEnumerator();
DictionaryEntry dentry;
while(denumer.MoveNext())
{
dentry = (DictionaryEntry)denumer.Current;
Console.WriteLine("{0}:{1}", dentry.Key, dentry.Value);
}
哈希表的排序:
对哈希表排序实际上是对哈希表中键值对的key值按一定的顺序重新排列,但是,C#并没有直接提供对HashTable进行排序的方法,如果我们需要对哈希表以一定的顺序输出,只能采取一种变通的方法,将key值单独取出来进行排序后,再根据key值对表进行访问:
//排序
ArrayList list = new ArrayList(hashtable.Keys);
list.Sort();
foreach(string skey in list)
{
Console.WriteLine("{0}:{1}", skey, hashtable[skey]);
}