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