技术文章 > [原创]C#活学活用哈希表HASHTABLE

[原创]C#活学活用哈希表HASHTABLE

2018-08-22 01:39

文档管理软件,文档管理系统,知识管理系统,档案管理系统的技术资料:

哈希表是高效率C#程序应该经常使用的数据类型之一。

一、什么情况下使用哈希表Hashtable?

联高程序员认为:
(1)如果某些数据经常高频率地查询;
(2)这些数据量不算太少;
(3)查询的字段数据往往不是整数、实数而是字符串类型的;

那么您需要考虑在C#程序中采用哈希表Hashtable了。
比如:省市信息、城市信息、中文分词的词组与关键字等等;


二、C#中怎么使用哈希表Hashtable?


首先需要使用相关的namespace

using System.Collections;
using System.Collections.Generic;

初始化(我们假设需要分别用中文,拼音,英文查询省市信息):


Hashtable hProvincesCN = new Hashtable();
Hashtable hProvincesPY = new Hashtable();
Hashtable hProvincesEN = new Hashtable();

public class Province
{
string ChineseName;
string PinyinName;
string EnglishName;
long Population;
}

Province prv = new Province;
prv.ChineseName = “北京“;
prv.PinyinName = “BeiJing“;
prv.EnglishName = “PeiKing“;
prv.Population = 131231;
hProvinceCN.Add(prv.ChineseName, prv);

...

稍微完整的程序如下:

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;

public class Provinces
{
private Hashtable hProvincesCN = new Hashtable();
private Hashtable hProvincesPY = new Hashtable();
private Hashtable hProvincesEN = new Hashtable();

public void Add(string cname, string pname, string ename, long pp)
{
Province prv = new Province;
prv.ChineseName = cname;
prv.PinyinName = pname;
prv.EnglishName = ename;
prv.Population = 131231;
hProvinceCN.Add(prv.ChineseName, prv);
}

public Province FindByChinese(string name)
{
if(hProvincesCN[name]!=null) {
return (Province)hProvincesCN[name];
}
}

...

public List<Province> SortedList()
{
// 从 Hashtable 导入 List
// 这里就是哈希表的遍历了
List<Province> am = new List<Province>();
IDictionaryEnumerator en = hProvincesCN.GetEnumerator();
while (en.MoveNext())
{
Province wc = (Province)en.Value;
am.Add(Province);
}

am.Sort(delegate(Province a, Province b) { return a.Population.CompareTo(b.Population); });

return am;
}
}

本文简要介绍了C#中使用哈希表的核心程序,包括创建哈希表、增加数据、查询数据(效率高哦)、哈希表的遍历等。
差不多就够用了。

Happy for your coding!