怎么样使用Hashtable?

怎么样使用Hashtable?

一。介绍

表示键/值对的集合,这些键/值对 根据键的哈希代码进行组织。

提供快速的查询。元素的存储与顺序无关。不能在指定位置插入元素,因为它本身没有有效的排序。感觉它的优点体现在查询上。

hashtable的键必须是唯一的,没有有效的排序,它进行的是内在的排序

 

public class Hashtable : IDictionary, ICollection, IEnumerable,

ISerializable, IDeserializationCallback, ICloneable

每个元素是一个存储在 DictionaryEntry 对象中的键/值对。键不能为空引用(Visual Basic

 

中为 Nothing),但值可以。

 

注:所谓的DictionaryEntry 结构,就是定义可设置或检索的字典键值对,有一个Key属性,

 

一个Value属性,分别代表键和值

 

二。添加

Hashtable.Add 方法

public virtual void Add(

object key,

object value

);

将带有指定键和值的元素添加到 Hashtable 中。

key

要添加的元素的键。

value

要添加的元素的值。该值可以为空引用(Visual Basic 中为 Nothing)。

通过设置 Hashtable 中不存在的键的值,Item

 

属性也可用于添加新元素。例如:myCollection["myNonexistentKey"] = myValue。但是,如

 

果指定的键已经存在于 Hashtable 中,设置 Item 属性将改写旧值。相比之下,Add 方法不

 

修改现有元素。

Hashtable hTable = new Hashtable();

hTable.Add("1","a");

hTable.Add("2","b");

hTable.Add("3","c");

hTable.Add("4","d");

hTable.Add("5","e");

//hTable.Add("1","aaaaaaaaaaa");//出错,因为已经有键“1”

hTable["1"] = "aaaaaaaaaaa";//ok

DropDownList2.DataSource = hTable;

DropDownList2.DataTextField = "Key";

DropDownList2.DataValueField = "Value";

DropDownList2.DataBind();

 

 

二。删除

1。public virtual void Remove(

object key

);

从 Hashtable 中移除带有指定键的元素。

如果 Hashtable 不包含带有指定键的元素,则 Hashtable 保持不变。不引发异常。

 

2。public virtual void Clear();

从 Hashtable 中移除所有元素。

Count 设置为零。容量保持不变。

 

三。其他

1。public virtual ICollection Values {get;}

获取包含 Hashtable 中的值的 ICollection。

注:ICollection 接口,定义所有集合的大孝枚举数和同步方法。

Hashtable hTable = new Hashtable();

hTable.Add("1","a");

hTable.Add("2","b");

hTable.Add("3","c");

hTable.Add("4","d");

hTable.Add("5","e");

Label2.Text = "";

foreach (string strKey in hTable.Keys)//遍历

{

Label2.Text += strKey;

Label2.Text += ",";

}

 

2。public virtual ICollection Keys {get;}

获取包含 Hashtable 中的键的 ICollection。

返回的 ICollection 不是静态副本;相反,ICollection 反向引用原始 Hashtable 中的键。

 

因此,对 Hashtable 的更改继续反映到 ICollection 中。

 

3。public virtual bool Contains(

object key

);

确定 Hashtable 是否包含特定键。

 

4。public virtual bool ContainsKey(

object key

);

确定 Hashtable 是否包含特定键。与Contains同

 

5。public virtual bool ContainsValue(

object value

);

确定 Hashtable 是否包含特定值

 

6。public virtual int Count {get;}

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