本博客参考了:https://www.cnblogs.com/xpvincent/archive/2013/01/15/2860841.html
使用HashTable的情况:1.数据量很大 2.高频查询 3.数据类型不唯一
基本操作:
//添加一个keyvalue键值对:
HashtableObject.Add(key,value);
//移除某个keyvalue键值对:
HashtableObject.Remove(key);
//移除所有元素:
HashtableObject.Clear();
// 判断是否包含特定键key:
HashtableObject.Contains(key);
控制台程序例子:
public static void Main()
{
Hashtable ht = new Hashtable(); //创建一个Hashtable实例
ht.Add("北京", "帝都"); //添加keyvalue键值对
ht.Add("上海", "魔都");
ht.Add("广州", "省会");
ht.Add("深圳", "特区");
string capital = (string)ht["北京"];
Console.WriteLine(ht.Contains("上海")); //判断哈希表是否包含特定键,其返回值为true或false
ht.Remove("深圳"); //移除一个keyvalue键值对
ht.Clear(); //移除所有元素
}
哈希表中使用多种数据类型的例子:
static Hashtable GetHashtable()
{
Hashtable hashtable = new Hashtable();
hashtable.Add("名字", "小丽");
hashtable.Add("年龄", 22);
return hashtable;
}
static void Main()
{
Hashtable hashtable = GetHashtable();
string name = (string)hashtable["名字"];
Console.WriteLine(name);
int age = (int)hashtable["年龄"];
Console.WriteLine(age);
}
遍历哈希表
for(DictionaryEntry de in ht) //ht为一个Hashtable实例
{
Console.WriteLine(de.Key); //de.Key对应于keyvalue键值对key
Console.WriteLine(de.Value); //de.Key对应于keyvalue键值对value
}
foreach (int key in hashtable.Keys)
{
Console.WriteLine(key);
}
foreach (string value in hashtable.Values)
{
Console.WriteLine(value);
}
哈希表进行排序
ArrayList akeys=new ArrayList(ht.Keys);
akeys.Sort(); //按字母顺序进行排序
foreach(string key in akeys)
{
Console.WriteLine(key + ": " + ht[key]); //排序后输出
}
使用Hashtable.Synchronized进行同步
Hashtable ht = Hashtable.Synchronized(new Hashtable());
ht.Add("user-1", "niewei");
ht.Add("user-2", "XuHongChun");
使用Hashtable.SyncRoot进行同步
Hashtable ht = new Hashtable();
lock(ht.SyncRoot)
{
ht.Add("user-1", "niewei");
ht.Add("user-2", "xuHongChun");
}