如何在 C# 中检查 Hashtable 中是否存在键?


C# 中的 Hashtable 类表示键值对的集合。这些键值对根据使用哈希码函数计算的键的哈希码进行组织。

Hashtable 中的键用于访问项。因此,给定一个键,我们可以在 Hashtable 中访问该键对应的值。Hashtable 中的键是唯一且非空的。但是,值可以为空或重复。

在我们之前的教程中,我们一直在讨论 Hashtable 主题。我们将在本文中继续这一趋势。在本文中,我们将讨论如何检查 Hashtable 集合中是否存在键。

所以让我们开始吧。

如何检查 Hashtable 中是否存在键?

Hashtable 类提供了两种方法来帮助我们检查 Hashtable 中是否存在键。这两种方法分别是 ContainsKey()Contains()。我们将逐一讨论这些方法。

方法 描述
ContainsKey(object key) 如果键存在则返回 true,否则返回 false。
Contains() 如果键存在则返回 true,否则返回 false。

ContainsKey() 方法

Hashtable 类的 ContainsKey() 方法以键对象作为参数,如果此键对象存在于 Hashtable 中,则返回 true。如果 Hashtable 中不存在具有指定键的元素,则返回 false。

以下是 ContainsKey() 方法的一般原型。

语法

public virtual bool ContainsKey(object key);

参数

  • Key − 要在 Hashtable 中查找的 System.object 类型的键。

返回类型

  • True − 如果 Hashtable 包含具有指定键的元素。

  • False − Hashtable 不包含具有指定键的元素。

异常

  • ArgumentNullException − 如果键为空。

示例

以下程序演示了如何使用 ContainsKey() 方法检查 Hashtable 中是否存在键。

using System;
using System.Collections;
  
class Program {
  
   public static void Main() {
  
      // Create a Hashtable
      Hashtable myHashTable = new Hashtable();
  
      // Add elements in Hashtable
      myHashTable.Add("P", "Program");
      myHashTable.Add("T", "To");
      myHashTable.Add("F", "Find");
      myHashTable.Add("K", "Key");
  
      String key;
      Console.WriteLine("Enter the key which is to be found:");
      key = Console.ReadLine();
      if(key != ""){
         if (myHashTable.ContainsKey(key))
            Console.WriteLine("myHashTable contains the key={0}",key);
         else
            Console.WriteLine("myHashTable doesn't contain the key={0}",key);
      }
   }
}

在此程序中,我们有一个包含五个元素的 Hashtable myHashTable。然后,程序提示用户输入要查找的键。当用户输入键时,将使用输入的键作为参数执行 ContainsKey() 方法。如果该方法返回 true,则程序显示一条适当的消息。如果该方法返回 false,则表示该键不存在,并显示一条适当的消息。

当用户输入键并且 ContainsKey() 方法返回 true 时,将生成以下输出。

输出

Enter the key which is to be found:
P
myHashTable contains the key=P

由于 Hashtable 中存在一个具有给定键 (P) 的元素,因此 ContainsKey() 方法返回 true。然后,程序显示一条适当的消息。

现在让我们重新运行程序并生成第二个输出,如下所示。

输出

Enter the key whose value is to be found:
X
myHashTable doesn't contain the key=X

此处显示的消息表明 Hashtable 不包含该键。输入的键是 X,它不是 Hashtable 的一部分。因此,ContainsKey() 方法返回 false。

Contains() 方法

Contains() 方法是另一种用于检查 Hashtable 中是否存在键的方法。与 ContainsKey() 方法类似,Contains() 方法也以键对象作为参数,并搜索 Hashtable 以检查 Hashtable 中是否存在具有指定键的元素。

Contains() 方法的原型如下所示。

语法

public virtual bool Contains (object key);

参数

  • Key − 要在 Hashtable 中查找的键对象。

返回类型

  • True − Hashtable 包含具有指定键的元素。

  • False − Hashtable 不包含具有指定键的元素。

异常

如果键为空,则此方法会引发 ArgumentNullException

示例

下一个程序演示了 Contains() 方法的使用。

using System;
using System.Collections;
  
class Program {
  
   public static void Main() {
  
      // Create a Hashtable
      Hashtable myHashTable = new Hashtable();
  
      // Add elements in Hashtable
      myHashTable.Add("P", "Program");
      myHashTable.Add("T", "To");
      myHashTable.Add("F", "Find");
      myHashTable.Add("K", "Key");
  
      String key = "F";
      if(key != ""){
         if (myHashTable.Contains(key))
            Console.WriteLine("myHashTable contains the key={0}",key);
         else
            Console.WriteLine("myHashTable doesn't contain the key={0}",key);
      }
   }
}

该程序与上一个程序类似,除了方法更改之外。这里我们指定 key = “F”。调用带键作为参数的 contains() 方法,并在遍历 Hashtable 后返回适当的值。根据返回的值,显示程序的输出。

当用户输入 key = F 时,程序生成以下输出。

输出

myHashTable contains the key=F

输出表明 Hashtable 包含该键,因为 Hashtable 中存在具有指定键的元素,因此 Contains() 方法返回 true。

在本文中,我们讨论了 ContainsKey() 和 Contains() 方法,它们用于检查 Hashtable 集合中是否存在指定的键。我们还看到了编程示例以理解这个概念。我们将在后续教程中学习更多概念。

更新于: 2022-12-14

1K+ 次查看

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告