如何在 C# 中使用指定键从哈希表集合中获取值

csharpserver side programmingprogramming更新于 2025/5/13 13:37:17

哈希表是键值对的集合。我们可以使用迭代器访问键值对。我们也可以在集合中访问哈希表的键。同样,我们也可以访问哈希表中的值。给定一个哈希表,也可以访问指定键或指定值的匹配键的值。

让我们讨论一下如何根据键从哈希表集合中访问值。

如何使用指定键从哈希表集合中获取值?

这里,我们需要在给定键的情况下,从哈希表的键值对中获取值。

考虑跟踪哈希表。

{"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

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

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


相关文章