一、Hashtable和Dictionary的区别
Hashtable和Dictionary都是用于实现键值对(Key-Value)的数据结构。它们的主要区别在于:
-
所属命名空间不同
Hashtable属于System.Collections命名空间,而Dictionary属于System.Collections.Generic命名空间。Dictionary相对Hashtable更加新,支持泛型,并且提供了更加丰富的方法。 -
泛型支持不同
Hashtable不支持泛型,需要使用Object类型作为键和值的类型,而Dictionary支持泛型,可以指定键和值的具体类型。例如:
Hashtable ht = new Hashtable(); // Object类型作为键和值的Hashtable
Dictionary
- 允许空键和值不同
Hashtable允许键和值为null,但是Dictionary只允许值为null,如果键为null会抛出异常。
二、Hashtable的用法示例
Hashtable常用的方法包括Add、ContainsKey、ContainsValue、Remove和Clear。
以实现一个简单的词频统计为例,如下实现:
Hashtable ht = new Hashtable();
string text = "Hello World! Hello C#.";
string[] words = text.Split(new char[] { ' ', '.', '!', ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string word in words)
{
if (ht.ContainsKey(word))
{
ht[word] = (int)ht[word] + 1;
}
else
{
ht.Add(word, 1);
}
}
foreach (DictionaryEntry item in ht)
{
Console.WriteLine("{0}出现了{1}次。", item.Key, item.Value);
}
以上代码首先将text字符串按照空格、句号、感叹号和逗号进行拆分,得到一个单词数组,然后使用Hashtable对单词进行词频统计,最后输出每个单词出现的次数。
三、Dictionary的用法示例
Dictionary常用的方法包括Add、ContainsKey、ContainsValue、TryGetValue、Remove和Clear。
以实现一个简单的学生信息管理为例,如下实现:
Dictionary<string, string> students = new Dictionary<string, string>();
students.Add("1001", "张三");
students.Add("1002", "李四");
students.Add("1003", "王五");
students.Add("1004", "赵六");
string key = "1002";
if (students.ContainsKey(key))
{
students[key] = "周七";
Console.WriteLine("修改成功,新名称为{0}。", students[key]);
}
else
{
Console.WriteLine("不存在编号为{0}的学生。", key);
}
key = "1005";
string value;
if (students.TryGetValue(key, out value))
{
Console.WriteLine("存在编号为{0}的学生,名称为{1}。", key, value);
}
else
{
Console.WriteLine("不存在编号为{0}的学生。", key);
}
foreach (KeyValuePair<string, string> item in students)
{
Console.WriteLine("学号:{0},姓名:{1}。", item.Key, item.Value);
}
以上代码首先创建一个Dictionary对象,保存学生编号和姓名的对应关系,然后进行增删改查等操作,最后输出所有的学生信息。其中使用TryGetValue方法可以避免Key不存在时抛出异常的情况。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中Hashtable和Dictionary的区别与用法示例 - Python技术站