如何在 C# 中使用指定键从哈希表集合中获取值
哈希表是键值对的集合。我们可以使用迭代器访问键值对。我们也可以在集合中访问哈希表的键。同样,我们也可以访问哈希表中的值。给定一个哈希表,也可以访问指定键或指定值的匹配键的值。
让我们讨论一下如何根据键从哈希表集合中访问值。
如何使用指定键从哈希表集合中获取值?
这里,我们需要在给定键的情况下,从哈希表的键值对中获取值。
考虑跟踪哈希表。
{"US", "New York"}
{"FR", "Paris"}
{"UK", "London"}
{"IN", "Mumbai"}
{"GER", "Berlin"}
这里,假设我们需要找到键"UK"的值。因此,我们必须遍历哈希表,以确定哈希表是否包含key = UK。一旦找到 key=" UK",我们就可以通过 hashtable[key] 访问其对应的值。
示例
执行上述操作的程序如下所示 -
using System;
using System.Collections;
class MyHashTable {
// Main Method
static public void Main() {
// 创建一个哈希表实例
Hashtable Citytable = new Hashtable();
// 使用 Add() 方法在哈希表中添加键/值对
Citytable.Add("US", "New York");
Citytable.Add("FR", "Paris");
Citytable.Add("UK", "London");
Citytable.Add("IN", "Mumbai");
Citytable.Add("GER", "Berlin");
String key;
Console.WriteLine("Enter the key whose value is to be printed:");
key = Console.ReadLine();
if(key != ""){
if(Citytable.Contains(key) == true){
string keyval = (string)Citytable[key];
Console.WriteLine("The value of key {0} = {1}", key,keyval);
}
else
Console.WriteLine ("Value for the key= {0} does not exist", key);
}
Console.ReadKey();
}
}
在上面的程序中,我们定义了一个哈希表。然后用户输入要获取值的键。读取键作为输入后,我们首先判断该键是否为空。这是因为哈希表键不能为空。因此,如果用户输入的是空值,我们将不会继续查找该值。
因此,如果键不为空,我们将检查哈希表是否包含指定的键。为此,我们使用 C# 中的哈希表集合方法 Contains(),如果键存在于哈希表中,则返回 true;如果键不存在,则返回 false。
如果 Contains() 方法返回 true,则我们直接访问该特定键的值。
string keyval = (string)Citytable[key];
然后将该值显示给用户。
输出
输入要打印其值的键: FOR 键 FR 的值 = Paris
在此输出中,用户执行了程序并输入了键值 FR。由于此键已存在于哈希表中,因此成功返回该键的值。
现在,如果我们输入一个哈希表中不存在的键值呢?
让我们再次执行程序。现在,我们的哈希表中没有加拿大这个国家的键。让我们输入代表加拿大的键 CAN。输出如下所示。
输出
输入要打印其值的键: CAN 键 CAN 的值不存在
此处,由于哈希表中不包含 key=CAN,程序返回该值不存在的消息。
通过这种方式,我们可以开发一个交互式程序,从哈希表集合中查找指定键的值。
我们再举一个例子,使用哈希表查找给定键的值。
这里我们考虑以下包含数字及其对应数字名称的哈希表。
{"1.1","1.1"}
{"1.2","1.2"}
{"1.3","1.3"}
{"1.4","1.4"}
{"1.5","1.5"}
与上一个示例类似,这里我们也将要求用户输入要查找值的键,然后在哈希表中搜索指定的键并显示其值。
示例 2
下面给出了执行相同操作的程序。
using System;
using System.Collections;
class MyHashTable {
// Main Method
static public void Main() {
// 创建一个哈希表实例
Hashtable Numbernames = new Hashtable();
// 使用 Add() 方法在哈希表中添加键/值对
Numbernames.Add("1.1", "One point One");
Numbernames.Add("1.2", "One point Two");
Numbernames.Add("1.3", "One point Three");
Numbernames.Add("1.4", "One point Four");
Numbernames.Add("1.5", "One point Five");
String key = "1.4";
if(key != ""){
if(Numbernames.Contains(key) == true){
string keyval = (string)Numbernames[key];
if(keyval != "")
Console.WriteLine("The value of key {0} = {1}", key,keyval);
else
Console.WriteLine("The value for key = {0} does not exist", key);
}
else
Console.WriteLine ("The key= {0} does not exist in the NumberNames hashtable", key);
}
Console.ReadKey();
}
}
除了哈希表和我们指定的检查空值的额外条件外,该程序与前面的示例相同。这是因为可能会发生这种情况:指定的键可能存在于哈希表中,但其对应的值可能为空。其次,我们不会在此程序中读取用户输入,而是直接使用 key ="1.4"并打印出此键的值。所以我们在这个程序中引入了另一个检查。因此,这个程序现在检查 -
如果指定的键为空
如果键不为空,程序将检查哈希表是否包含该键。
如果哈希表包含该键,则它会检索该键的值。如果值不为空,则程序将显示该值。
如果值为空,则显示相应的消息。
输出
The value of key 1.4 = One point Four
当我们指定哈希表中存在的正确键时,会生成此输出。
在本文中,我们了解了如何根据键从哈希表集合中获取值。我们还看到了几个具有不同输出的编程示例,以澄清概念。在后续文章中,我们将继续讨论哈希表主题。

