一、Hashtable 核心介绍(必考)

1. 定义定位

Hashtable 是 .NET 早期非泛型键值对哈希集合

  • 属于键值对集合(和 Dictionary 同类)

  • 基于哈希算法实现快速查找

  • 现已被 Dictionary 完全淘汰替代

2. 底层核心原理(必背)

存入数据时传入 Key 和 Value:

  1. 通过哈希函数将 Key 转换成数字(哈希码)

  2. 根据哈希码直接定位内存存储位置

  3. 实现:按键秒查数据,查询速度极快

3. 致命缺点(为什么被淘汰)

  • 类型不安全:Key、Value 全部默认为 object,可以随便混存

  • 存在装箱拆箱:存取值类型必定转换,性能差

  • 非泛型、写法老旧、项目不再使用


二、Hashtable 完整语法与初始化

无需指定类型,任意 Key、任意 Value 都能存

// 初始化直接批量添加键值对
Hashtable table = new Hashtable()
{
    {1,"这是1" },
    {true,"这是true1" },
};

三、Hashtable 全套增删改查方法

1. Add() 添加键值对

可以存任意类型:int、bool、数组、对象、字符串

table.Add(0, "这是0");
table.Add(2, new int[] { 1, 2, 3 });

2. Count 获取键值对个数

Console.WriteLine(table.Count);

3. 根据 Key 取值

Console.WriteLine(table[1]);

4. 修改数据

直接通过索引 Key 覆盖赋值

table[1] = 100;
Console.WriteLine(table[1]);

5. 获取所有 Keys / Values

table[1] = 100;
Console.WriteLine(table[1]);
Console.WriteLine(table.Keys);   // 获取全部键集合
Console.WriteLine(table.Values); // 获取全部值集合

6. 移除数据

table.Remove(0);    // 根据Key移除指定键值对
// table.Clear();  // 清空所有数据

7. 判断 Key 是否存在

Console.WriteLine(table.ContainsKey(0));

8. 遍历 Values

foreach (var item in table.Values)
{
    Console.WriteLine(item + "---");
}

四、Hashtable 独有特点

  • 无序存储:哈希表不保证存入顺序

  • Key 唯一:不能重复添加相同 Key

  • 万物皆可存:不限类型,全部 object

  • 查询快、遍历慢:哈希定位查询极佳,遍历性能弱


五、Hashtable VS Dictionary 精准对比(核心)

对比维度

Hashtable 哈希表

Dictionary 字典

版本

早期非泛型(老旧)

泛型集合(现代推荐)

类型安全

不安全,任意类型混存

安全,固定 Key/Value 类型

装箱拆箱

有,性能低

无,性能高

存储顺序

无序

有序(存入顺序)

项目使用

已淘汰

项目百分百使用


六、四大集合终极汇总(最全背诵表)

ArrayList / List<T> / Hashtable / Dictionary

集合类型

结构

类型安全

装箱拆箱

使用场景

ArrayList

顺序列表

不安全

老旧淘汰

List<T>

顺序列表

安全

存列表、排序、遍历

Hashtable

键值对哈希

不安全

老旧淘汰

Dictionary

键值对哈希

安全

分组、映射、按键查询


七、最终口诀(满分背诵)

  • 列表存数据用 List,彻底替代 ArrayList

  • 分组键值对用 Dictionary,彻底替代 Hashtable

  • 泛型<T> = 类型安全、无装箱、高性能

  • 不带泛型 = 老旧、不安全、装箱、已淘汰

更多推荐