C# Hashtable 类实现了 IDictionary 接口,集合中的值都是以键值对的形式存取的。
C# 中的 Hashtable 称为哈希表,也称为散列表,在该集合中使用键值对(key/value)的形式存放值。
换句话说,在 Hashtable 中存放了两个数组,一个数组用于存放 key 值,一个数组用于存放 value 值。
此外,还提供了根据集合中元素的 key 值查找其对应的 value 值的方法。
Hashtable 常用的是不含参数的构造方法。
Hashtable 对象名 = new Hashtable();
1、Hashtable.Add(Object, Object) 方法
将带有指定键和值的元素添加到 Hashtable 中。
Hashtable test = new Hashtable
{
{
1, 234 },
{
2, null},//不能 null 键,但值可以是
{
3, 345 },
{
4, 234 }
};
foreach(DictionaryEntry v in test)
{
Console.WriteLine("序号{0}对应的值是{1}",v.Key,v.Value);
}
2、Hashtable.Clear 方法
从 Hashtable 中移除所有元素。
Hashtable test = new Hashtable
{
{
1, 234 },
{
2, null},//不能 null 键,但值可以是
{
3, 345 },
{
4, 234 }
};
foreach(DictionaryEntry v in test)
{
Console.WriteLine("序号{0}对应的值是{1}",v.Key,v.Value);
}
test.Clear();
foreach(DictionaryEntry v in test)
{
Console.WriteLine("移除后的结果:序号{0}对应的值是{1}",v.Key,v.Value);
}
3、Hashtable.Contains(Object) 方法
确定 Hashtable 是否包含特定键。
public virtual bool Contains (object key);
要使用在 Hashtable 中定位的键,如果包含指定键即为 Hashtable,否则为 False。
Hashtable ht = new Hashtable
{
{
1, "计算机基础" },
{
2, "高级编程" },
{
3, "数据库应用" }
};
Console.WriteLine("请输入图书编号");
int id = int.Parse(Console.ReadLine());
bool flag = ht.Contains(id);
if (flag)
{
Console.WriteLine("你查找的图书名称是:{0}", ht[id].ToString());
}
else
{
Console.WriteLine("你查找的图书编号不存在!");
}
Contains 可实现 IDictionary.Contains,它的行为与 ContainsKey 完全相同。
4、Hashtable.ContainsKey(Object) 方法
确定 Hashtable 是否包含特定键。
public virtual bool ContainsKey (object key);
如果 true 包含具有指定键的元素,则为 Hashtable;否则为 false。
Hashtable test = new Hashtable()
{
{
0,"zero"},
{
1,"one"},
{
2,"two"},
{
3,"three"},
{
4,"four"}
};
//打印哈希表
foreach (DictionaryEntry v in test)
{
Console.WriteLine("键值{0}对应的数值是{1}",v.Key,v.Value);
}
//判断指定键
Console.WriteLine("请输入指定键值:");
try
{
int myKey = int.Parse(Console.ReadLine());
if(test.ContainsKey(myKey))
{
Console.WriteLine("这个键值在哈希表中,且值为:" + test[myKey]);
}
else
{
Console.WriteLine("这个键值不在哈希表中");
}
catch (EXception ex)
{
Console.WriteLine(ex.Message);
}
}
在判断时可采用三元表达式:
Hashtable test = new Hashtable()
{
{
0,"zero"},
{
1,"one"},
{
2,"two"},
{
3,"three"},
{
4,"four"}
};
int myKey = 2;
Console.WriteLine("键值{0}是{1}",myKey,test.ContainsKey(myKey)?"在哈希表中":"不在哈希表中");
5、Hashtable.ContainsValue(Object) 方法
确定 Hashtable 是否包含特定值。
public virtual bool ContainsValue (object value);
如果 true 包含具有指定 Hashtable 的元素,则为 value;否则为 false。
Hashtable test = new Hashtable()
{
{
0,"zero"},
{
1,"one"},
{
2,"two"},
{
3,"three"},
{
4,"four"}
};
//打印哈希表
foreach (DictionaryEntry v in test)
{
Console.WriteLine("键值{0}对应的数值是{1}",v.Key,v.Value);
}
//判断指定数值
Console.WriteLine("请输入数值:");
try
{
string myValue = Console.ReadLine().ToString();
if (test.ContainsValue(myValue))
{
Console.WriteLine("这个数值在哈希表中");
}
else
{
Console.WriteLine("这个数值不在哈希表中");
}
}
6、Hashtable.Remove(Object) 方法
根据指定的 key 值移除对应的集合元素。
Hashtable test = new Hashtable()
{
{
1,"张三"},
{
2,"李四"},
{
3,"王五"},
{
4,"马六"},
{
5,"陈七"},
{
6,"周八"}
};
foreach(DictionaryEnty v in test)
{
Console.WriteLine("键值{0}对应的数值是{1}",v.Key,V.Value);
}
test.Remove();
foreach(DictionaryEntry v int test)
{
Console.WriteLine("键值{0}对应的数值是{1}",v.Key,V.Value);
}
Count 属性
获取哈希表中的元素个数。
Hashtable test = new Hashtable()
{
{
1,"张三"},
{
2,"李四"},
{
3,"王五"},
{
4,"马六"},
{
5,"陈七"},
{
6,"周八"}
};
int num = test.Count;
Console.WriteLine(num);