哈希表(Hash table)是一种常见的数据结构,用于存储键值对(key-value pairs)。在C#中,可以使用System.Collections.Hashtable类来创建一个哈希表对象,它提供了各种方法来管理键值对。
以下是一些C#中哈希表的操作方法的详细讲解:
创建哈希表对象
可以通过以下代码来创建一个哈希表对象:
Hashtable hashTable = new Hashtable();
添加/更新键值对
可以使用Add方法来添加一个键值对到哈希表中,如果该键已经存在,则会抛出异常;可以使用索引器来更新一个已存在的键值对:
//添加键值对
hashTable.Add("name", "Tom");
hashTable.Add("age", 18);
//更新键值对
hashTable["age"] = 20;
获取键值对
可以使用索引器来获取哈希表中指定键的值,也可以使用TryGetValue方法来获取,如果键不存在,则TryGetValue方法返回false:
//获取键值对
string name = (string)hashTable["name"];
int age;
if (hashTable.TryGetValue("age", out object ageObj))
{
age = (int)ageObj;
}
判断键是否存在
可以使用ContainsKey方法来判断指定的键是否存在于哈希表中:
if (hashTable.ContainsKey("name"))
{
//存在
}
else
{
//不存在
}
删除键值对
可以使用Remove方法来删除哈希表中指定的键值对:
hashTable.Remove("name");
遍历哈希表
可以使用foreach语句来遍历哈希表中的所有键值对,其中KeyValuePair类表示一个键值对:
foreach (KeyValuePair<object, object> pair in hashTable)
{
Console.WriteLine("{0} = {1}", pair.Key, pair.Value);
}
示例
以下是一个使用哈希表实现高频单词统计的示例:
string[] words = {
"apple", "banana", "cherry", "apple", "banana", "apple"
};
Hashtable countTable = new Hashtable();
foreach (string word in words)
{
if (countTable.ContainsKey(word))
{
countTable[word] = (int)countTable[word] + 1;
}
else
{
countTable.Add(word, 1);
}
}
foreach (KeyValuePair<object, object> pair in countTable)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
输出:
apple: 3
banana: 2
cherry: 1
这个示例统计了一个字符串数组中每个单词出现的次数,使用哈希表记录每个单词出现的次数,最后遍历哈希表打印出每个单词出现的次数。
另一个示例,使用哈希表存储一堆人的姓名和年龄:
Hashtable people = new Hashtable();
people.Add("Tom", 18);
people.Add("Jerry", 20);
people.Add("Alice", 25);
people.Add("Bob", 30);
//更新年龄
people["Tom"] = 19;
foreach (KeyValuePair<object, object> pair in people)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
输出:
Tom: 19
Jerry: 20
Alice: 25
Bob: 30
这个示例演示了如何使用哈希表记录人的姓名和年龄,以及如何更新一个存在的键值对。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中Hash table的一些操作方法讲解 - Python技术站