如何在 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

当我们指定哈希表中存在的正确键时,将生成此输出。

在本文中,我们了解了如何根据键从哈希表集合获取值。我们还看到了几个编程示例以及不同的输出以阐明概念。在接下来的文章中,我们将继续讨论哈希表主题。

更新于:2022-12-22

6K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告