C#集合之HASHTABLE
?
System.Collections. Hashtable类表示键/值对的集合,这些键/值对根据键的哈希代码进行组织, 每个元素都是一个存储在?DictionaryEntry?对象中的键/值对。键不能为 null,但值可以。
1、通过Key快速查找。
2、Hashtable?是线程安全的。
构造器函数
注释
Public?Hashtable ()
使用默认的初始容量(容量大小为0)、加载因子、哈希代码提供程序和比较器来初始化?Hashtable?类的新的空实例。
public?Hashtable (IDictionary)
通过将指定字典中的元素复制到新的?Hashtable?对象中,初始化?Hashtable?类的一个新实例。新Hashtable?对象的初始容量等于复制的元素数,并且使用默认的加载因子、哈希代码提供程序和比较器。
public?Hashtable (Int32)
使用指定的初始容量、默认加载因子、默认哈希代码提供程序和默认比较器来初始化?Hashtable?类的新的空实例。
属性名
注释
Count
获取包含在?Hashtable?中的键/值对的数目。
IsFixedSize
获取一个值,该值指示 Hashtable 是否具有固定大小。
IsReadOnly
获取一个值,该值指示 Hashtable 是否为只读。
Keys
获取包含 Hashtable 中的键的?ICollection。
Values
获取包含 Hashtable 中的值的 ICollection。
方法名
注释
Void?Add(object key,object value)
将带有指定键和值的元素添加到?Hashtable?中。
Void?Clear()
从 Hashtable 中移除所有元素。
Bool?Contains(object key)
确定 Hashtable 是否包含特定键。
Bool?ContainsKey(object key)
确定 Hashtable 是否包含特定键。
Bool?ContainsValue(object value)
确定 Hashtable 是否包含特定值。
Void?Remove(object key)
从 Hashtable 中移除带有指定键的元素。
Void InsertRange(int index,Icollection collec)
用于从指定位置开始添加一批元素,列表后面的元素依次往后移动
Clone()
创建 Hashtable 的浅表副本。
GetObjectData()
实现?ISerializable?接口,并返回序列化 Hashtable 所需的数据。
?
?
??
7、Hashtable遍历方法
方法一
?foreach (System.Collections.DictionaryEntry objDE in objHasTab)
{
??? Console.WriteLine(objDE.Key.ToString());
??? Console.WriteLine(objDE.Value.ToString());
}?
方法二
System.Collections.IDictionaryEnumerator enumerator = objHashTablet.GetEnumerator();?
while (enumerator.MoveNext())
{
??? Console.WriteLine(enumerator.Key);???????? // Hashtable关健字
??? Console.WriteLine}
8、Hashtable排序
//把ht的键对象全部复制到ArrayList中
?ArrayList al = new ArrayList(ht.Keys);
?/*ht.Keys返回ht中所有键对象构成的集合,把该集合传递给ArrayList构造方法则得到一个包
*所有键对象的动态数组
*/
? al.Sort();//从小到大排列
? //排序完成输出
?? for (int i = 0; i < al.Count;i++ )
?? {
????????? object e=al[i];
????????? object temp = (object)ht[e];//键作为索引器来获得对应的值对象
?????????? Console.WriteLine(temp.tostring());
}