集合
哈希表
前言
哈希表是一个非泛型集合,用于存储键值对,这些键值对是基于每个键的哈希码排列的。哈希表类实现了 ICollection
接口。
作用
哈希表用于存储和管理键值对数据,通过哈希算法快速查找数据。它适用于需要根据键快速检索值的场景。
使用场景
哈希表适合以下使用场景:
- 用户数据存储:例如存储用户信息,通过用户名快速检索用户信息。
- 配置管理:存储和管理应用程序配置项。
- 频繁查找操作:如缓存数据,需要快速检索和存储。
示例
- 创建哈希表
using System;
using System.Collections;
class Program
{
public static void Main()
{
// 创建一个哈希表
Hashtable myTable = new Hashtable();
// 向哈希表中添加项
myTable.Add("Name", "李雷");
myTable.Add("Age", 30);
myTable.Add("City", "北京");
// 打印键为 "Age" 的值
Console.WriteLine(myTable["Age"]);
}
}
输出
30
在这个例子中,我们创建了一个哈希表并添加了几个键值对。然后,我们根据键访问并打印了一个值。
- 添加元素
using System;
using System.Collections;
class Program
{
public static void Main()
{
// 创建一个哈希表
Hashtable myTable = new Hashtable();
// 向 Hashtable 中添加项
myTable.Add("Course", "数学");
myTable.Add("Code", 101);
}
}
在这个例子中,我们创建了一个名为 myTable
的哈希表,并通过 Add()
方法添加了两个键值对。
- 访问哈希表元素
using System;
using System.Collections;
class Program
{
public static void Main()
{
// 创建一个哈希表并添加元素
Hashtable myTable = new Hashtable();
// 向 Hashtable 中添加项
myTable.Add("Department", "财务部");
myTable.Add("EmployeeID", 12345);
// 访问键为 "Department" 的值
Console.WriteLine(myTable["Department"]);
// 访问键为 "EmployeeID" 的值
Console.WriteLine(myTable["EmployeeID"]);
}
}
输出
财务部
12345
在这个例子中,我们通过键访问哈希表中的值。
- 遍历哈希表
using System;
using System.Collections;
class Program
{
public static void Main()
{
// 创建一个哈希表并添加元素
Hashtable myTable = new Hashtable();
// 向哈希表中添加项
myTable.Add("Product", "手机");
myTable.Add("Price", 3999);
myTable.Add("Stock", 50);
// 打印哈希表的键
foreach (var key in myTable.Keys)
{
Console.WriteLine("Key = {0}", key);
}
// 打印哈希表的值
foreach (var value in myTable.Values)
{
Console.WriteLine("Value = {0}", value);
}
}
}
输出
Key = Product
Key = Price
Key = Stock
Value = 手机
Value = 3999
Value = 50
在这个例子中,我们使用 foreach
循环遍历哈希表的键和值。
- 修改哈希表元素
using System;
using System.Collections;
class Program
{
public static void Main()
{
// 创建一个哈希表并添加元素
Hashtable myTable = new Hashtable();
// 向哈希表中添加项
myTable.Add("Location", "上海");
myTable.Add("Population", 24256800);
// 打印原始值
Console.WriteLine("修改前的 Location: " + myTable["Location"]);
// 修改 "Location" 键的值为 "广州"
myTable["Location"] = "广州";
// 打印更新后的值
Console.WriteLine("修改后的 Location: " + myTable["Location"]);
}
}
输出
修改前的 Location: 上海
修改后的 Location: 广州
在这个例子中,我们修改了哈希表中 “Location” 键的值。
- 删除哈希表元素
using System;
using System.Collections;
class Program
{
public static void Main()
{
// 创建一个哈希表并添加元素
Hashtable myTable = new Hashtable();
// 向哈希表中添加项
myTable.Add("Brand", "宝马");
myTable.Add("Model", "X5");
myTable.Add("Year", 2024);
Console.WriteLine("原始哈希表:");
foreach (DictionaryEntry item in myTable)
{
Console.WriteLine("{0} : {1} ", item.Key, item.Value);
}
// 删除键为 "Model" 的值
myTable.Remove("Model");
Console.WriteLine("\n修改后的哈希表:");
// 遍历修改后的哈希表
foreach (DictionaryEntry item in myTable)
{
Console.WriteLine("{0} : {1} ", item.Key, item.Value);
}
}
}
输出
原始哈希表:
Brand : 宝马
Model : X5
Year : 2024
修改后的哈希表:
Brand : 宝马
Year : 2024
在这个例子中,我们通过 Remove("Model")
删除了键为 “Model” 的元素。