C#入门及进阶|数组和集合(八):HashTable类介绍

在ArrayList集合中,可以使用索引访问元素,如果不能确切知道索引的值,访问就比较困难。HashTable称为哈希表,和ArrayList不同,它利用键/值来存储数据,在哈希表中,每个元素都是一个键/值对,并且是一一对应的,通过"键"就可以得到"值"。如果存储电话号码,通常是姓名和电话号码存在一起,存储时把姓名当作键,号码作为值,通过姓名即可查到电话号码,这就是一个典型的哈希表存储方式。

哈希表常用的属性如下表所示:

|----------|-------------------------|
| 属性名称 | 属性说明 |
| Count | 获取包含在Hashtable中的键/值对的数目 |
| Keys | 获取包含Hashtable中的所有键的集合 |
| Values | 获取包含Hashtable中的所有值的集合 |

哈希表常用的方法如下表所示:

|---------------|---------------------------------------|
| 方法名称 | 方法说明 |
| Add | 将带有指定键和值的元素添加到Hashtable中 |
| Clear | 从Hashtable中移除所有元素 |
| Contains | 确定Hashtable是否包含特定键 |
| GetEnumerator | 返回IDictionaryEnumerator,可以遍历Hashtable |
| Remove | 从Hashtable中移除带有指定键的元素 |

Hashtable类提供了15个重载的构造函数,比较常用的4种Hashtable构造函

数声明如下。

(1)使用默认的初始容量、加载因子、哈希代码提供程序和比较器来初始化 Hashtable类的实例:

cs 复制代码
public Hashtable();

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

cs 复制代码
public Hashtable(int capacity);

(3)使用指定的容量,加载因子来初始化Hashtable类的实例:

cs 复制代码
public Hashtable(int capacity, float loadFactor);

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

cs 复制代码
public Hashtable(IDictionary d);

下面是一个初始化一个新的Hashtable对象并向其中添加元素并输出的代码实例:

cs 复制代码
static void Main(string[] args)
{
    // Creates and initializes a new Hashtable.
    Hashtable myHT = new Hashtable();
    myHT.Add( "one", "Cristiano Ronaldo" );
    myHT.Add( "two", "is" );
    myHT.Add( "three", "the" );
    myHT.Add( "four", "best" );
    // Displays the Hashtable.
    Console.WriteLine( "The Hashtable contains the following:" );
    foreach ( DictionaryEntry de in myHT )
        Console.WriteLine( "\t{0}:\t{1}", de.Key, de.Value);
}
相关推荐
朝九晚五ฺ21 分钟前
从零到实战:鲲鹏平台 HPC 技术栈与并行计算
java·开发语言
CUIYD_198923 分钟前
Freemarker 无法转译 & 字符
java·开发语言·spring
superman超哥31 分钟前
Rust Vec的内存布局与扩容策略:动态数组的高效实现
开发语言·后端·rust·动态数组·内存布局·rust vec·扩容策略
Evand J34 分钟前
【MATLAB例程,附代码下载链接】基于累积概率的三维轨迹,概率计算与定位,由轨迹匹配和滤波带来高精度位置,带测试结果演示
开发语言·算法·matlab·csdn·轨迹匹配·候选轨迹·完整代码
Yuiiii__35 分钟前
一次并不简单的 Spring 循环依赖排查
java·开发语言·数据库
野槐37 分钟前
java基础-面向对象
java·开发语言
遇见~未来1 小时前
JavaScript构造函数与Class终极指南
开发语言·javascript·原型模式
foundbug9991 小时前
基于MATLAB的TDMP-LDPC译码器模型构建、仿真验证及定点实现
开发语言·matlab
X***07881 小时前
从语言演进到工程实践全面解析C++在现代软件开发中的设计思想性能优势与长期生命力
java·开发语言
毕设源码-钟学长1 小时前
【开题答辩全过程】以 基于Python的车辆管理系统为例,包含答辩的问题和答案
开发语言·python