C#中哈希表(HashTable)的用法详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C#中哈希表(HashTable)的⽤法详解
描述:哈希表存放 key、values ,key值可以⽤于快速调取⽤,values 对应object类型,也就是说所有类型。
实例:
1.HashTable存放学⽣的成绩
Hashtable ht1 = new Hashtable(); //创建⼀个Hashtable实例
ht1.Add("张三", "100"); //添加keyvalue键值对
ht1.Add("李四", "100");
ht1.Add("王五", "100");
ht1.Add("赵六", "200");
string capital1 = (string)ht["王五"];//根据Key值获取信息
ht.Remove("赵六"); //移除⼀个keyvalue键值对 ht.Clear(); //移除所有元素
object value2 = ht["赵六"];//直接根据key取值,判断类型在进⾏转化
if (value2 is string)
{
}
foreach (DictionaryEntry de in ht) //ht为⼀个Hashtable实例,遍历哈希表 object对象
{
Control cc = (Control)de.Value;
}
//添加数据时Hashtable快。
频繁调⽤数据时Dictionary快。
2.System.Collections下的哈希表(Hashtable)和System.Collections.Generic下的字典(Dictionary)都可⽤作lookup table,下⾯⽐较⼀下⼆者的执⾏效率。
Stopwatch sw = new Stopwatch();
Hashtable hashtable = new Hashtable();
Dictionary<string, int> dictionary = new Dictionary<string, int>();
int countNum = 1000000;
sw.Start();
for (int i = 0; i < countNum; i++)
{
hashtable.Add(i.ToString(), i);
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds); //输出: 744
sw.Restart();
for (int i = 0; i < countNum; i++)
{
dictionary.Add(i.ToString(), i);
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds); //输出: 489
sw.Restart();
for (int i = 0; i < countNum; i++)
{
hashtable.ContainsKey(i.ToString());
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds); //输出: 245
sw.Restart();
for (int i = 0; i < countNum; i++)
{
dictionary.ContainsKey(i.ToString());
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds); //输出: 192
Dictionary<K,V>是泛型的,当K或V是值类型时,其速度远远超过Hashtable。