一简介
名词介绍散列表(Hash table也叫哈希表)是根据关键码值(Key value)而直接进行访问的数据结构也就是说它通过把关键码值映射到表中一个位置来访问记录以加快查找的速度这个映射函数叫做散列函数存放记录的数组叫做散列表
HashTable 表的优点HashTable是SystemCollections命名空间提供的一个容器HashTable中的key/value均为object类型所以HashTable可以支持任何类型的key/value键/值对
HashTable的优点就在于其索引的方式速度非常快
二哈希表的简单操作
在哈希表中添加一个keyvalue键值对HashtableObjectAdd(keyvalue);
在哈希表中去除某个keyvalue键值对HashtableObjectRemove(key);
从哈希表中移除所有元素 HashtableObjectClear();
判断哈希表是否包含特定键key HashtableObjectContains(key);
下面控制台程序将包含以上所有操作
using System;
using SystemCollections; //file使用Hashtable时必须引入这个命名空间
class hashtable
{
public static void Main()
{
Hashtable ht=new Hashtable(); //file创建一个Hashtable实例
htAdd(Ee); //添加keyvalue键值对
htAdd(Aa);
htAdd(Cc);
htAdd(Bb);
string s=(string)ht[A];
if(htContains(E)) //file判断哈希表是否包含特定键其返回值为true或false
ConsoleWriteLine(the E keyexist);
htRemove(C); //移除一个keyvalue键值对
ConsoleWriteLine(ht[A]); //此处输出a
htClear(); //移除所有元素
ConsoleWriteLine(ht[A]); //file此处将不会有任何输出
}
}
三遍历哈希表
遍历哈希表需要用到DictionaryEntry Object代码如下
for(DictionaryEntry de in ht) // fileht为一个Hashtable实例
{
ConsoleWriteLine(deKey); //deKey对应于keyvalue键值对key
ConsoleWriteLine(deValue); //deKey对应于keyvalue键值对value
}
四对哈希表进行排序
对哈希表进行排序在这里的定义是对keyvalue键值对中的key按一定规则重新排列但是实际上这个定义是不能实现的因为我们无法直接在Hashtable进行对key进行重新排列如果需要Hashtable提供某种规则的输出可以采用一种变通的做法
ArrayList akeys=new ArrayList(htKeys); // file别忘了导入SystemCollections
akeysSort(); // file按字母顺序进行排序
for(string skey in akeys)
{
ConsoleWrite(skey + );
ConsoleWriteLine(ht[skey]); // 排序后输出
}