首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#聚合之HASHTABLE

2012-08-31 
C#集合之HASHTABLE?1、HashTable定义System.Collections. Hashtable类表示键/值对的集合,这些键/值对根据键

C#集合之HASHTABLE

?

1、HashTable定义

System.Collections. Hashtable类表示键/值对的集合,这些键/值对根据键的哈希代码进行组织, 每个元素都是一个存储在?DictionaryEntry?对象中的键/值对。键不能为 null,但值可以。

2.优点

1、通过Key快速查找。

2、Hashtable?是线程安全的。

3. Hashtable的构造器

构造器函数

注释

Public?Hashtable ()

使用默认的初始容量(容量大小为0)、加载因子、哈希代码提供程序和比较器来初始化?Hashtable?类的新的空实例。

public?Hashtable (IDictionary)

通过将指定字典中的元素复制到新的?Hashtable?对象中,初始化?Hashtable?类的一个新实例。新Hashtable?对象的初始容量等于复制的元素数,并且使用默认的加载因子、哈希代码提供程序和比较器。

public?Hashtable (Int32)

使用指定的初始容量、默认加载因子、默认哈希代码提供程序和默认比较器来初始化?Hashtable?类的新的空实例。

4、Hashtable的属性

属性名

注释

Count

获取包含在?Hashtable?中的键/值对的数目。

IsFixedSize

获取一个值,该值指示 Hashtable 是否具有固定大小。

IsReadOnly

获取一个值,该值指示 Hashtable 是否为只读。

Keys

获取包含 Hashtable 中的键的?ICollection。

Values

获取包含 Hashtable 中的值的 ICollection。

5. Hashtable的方法

方法名

注释

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 所需的数据。

?

6、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());

}

热点排行