Hashtable类
Hashtable(哈希表)是一种键/值对集合,这些键/值对根据键的哈希代码进行组织。在一个hashtable中插入一对key/value时,它自动将key值映射到value,并允许获取与一个指定的key相关联的value。在hashtable中,主要使用Add和Remove两个方法对哈希进行操作。A断点方法用于将带有指定键和值的元素添加到Hashtable中;Remove方法用于从hashtable中移除带有指定键的元素。
语法:
//使用默认的初始容量、加载因子,哈希代码提供程序和比较器来初始化hashtable类的实例
Public Hashtable();
//使用指定容量,默认加载因子,默认哈希代码提供程序和比较器来初始化hashtable类的实例
Public Hashtable (int capacity);
//使用指定的容量和加载因子来初始化hashtable类的实例
Public hashtable(int capacity, float loadFactor)
//通过将指定字典中的元素复制到新的hashtable对象中,初始化hashtable类的一个新实例。新hashtable对像的初始容量等于复制的元素数,并且使用默认的加载因子,哈希代码提供程序和比较器
构造哈希表时,有一些新的概念需要先理解。
- 在哈希表中,键被转换为哈希代码,而值存储在存储器中。
- 初始容量是指哈希表中元素的数目。加载因子是指哈希表元素与存储器的最大比率,当初始容量需要自动扩展前,确定值与存储之间的最大比率。值越小,出现冲突的几率也越小。.NET默认加载因子为1.0
Hashtable 类的常用属性及说明
属性 | 说明 |
Count | 获取包含在Hashtable中键/值对的数目 |
IsFixedSize | 获取一个值,该值指示Hashtable是否具有固定大小 |
IsReadOnly | 获取一个值,该值指示Hashtable是否只读 |
IsSychronized | 获取一个值,该值指示是否同步对hashtable的访问 |
Item | 获取或设置与指定的键相关的值 |
Keys | 获取包含hashtable中的键的IColletion |
SyncRoot | 获取可用于同步hashtable访问的对象 |
Values | 获取包含hashtable中的值的ICollection |
- 属性值
获取包含在hashtable中的键/值对的数目
Public virtual int Count{get;}
属性值:包含在hashtable中键/值对的数目
- Item属性
获取或设置与指定的键相关联的值
Public virtual Object this [Object key] {get;set;}
Key:要获取或设置其值的键
属性值:与指定的键相关联的值。如果未找到指定的键,尝试获取它将返回空引用,尝试设置它将使用指定的键创建新元素。
- Keys属性
获取包含hashtable中的键的ICollection。
Public virtual ICollection Keys{get;}
属性值:包含hashtable中的键的ICollection。
- Values属性
获取 包含Hashtable中的值的ICollection。
Public virtual ICollection Values {get;}
属性值:一个ICollection 它包含Hashtable中的值
Hashtable类常用的方法及说明
方法 | 说明 |
Add | 将带有指定键和值的元素添加到哦Hashtable中 |
Clear | 从Hashtable中移除所有元素 |
Clone | 创建Hashtable的浅表副本 |
Contains | 确定Hashtable是否包含特定键 |
ContainsKey | 确定Hashtable是否包含特定键 |
ContainsValue | 确定Hashtable是否包含特定值 |
CopyTo | 将Hashtable元素复制到一维Array实例中的指定索引位置 |
GetEnumerator | 返回循环访问Hashtable的IDictionaryEnumerator |
GetHashCode | 用做特定类型的哈希函数GetHashCode |
Remove | 从Hashtable中移除带有指定键的元素 |
Synchronized | 返回Hashtable的同步包装 |
- Add方法。将带有指定键和值的元素添加到Hashtable中。
Public virtual void Add(object key,Object value)
Key:要添加的元素的键
Value:要添加的元素的值,该值可以为空引用。
- Clear方法。从Hashtable中移除所有元素。
Public virtual void Clear()
- ContainsKey方法。确定Hashtable是否包含特定键
Public virtual bool ContainsKey(Object key)
Key:要在Hashtable中定位的键。
返回值:如果hashtable包含具有指定键的元素,则为true;否则为false。
存放
说明:Hashtable不能包含重复的key。如果调用Add方法来添加一个keys数组中已有的key,就会抛出异常。为了避免这种情况,可以使用ContainsKey方法来测试哈希表中是否包含一个特定的key