如何在 C# 中检查哈希表中是否存在某个键?
C# 中的 Hashtable 类表示键值对的集合。这些键值对基于使用哈希码函数计算的键的哈希码进行组织。
哈希表中的键访问项目。因此,给定一个键,我们可以访问哈希表中该键的对应值。哈希表中的键是唯一的且非空。但是,值可以为空或重复。
我们在之前的教程中一直在讨论哈希表主题。我们在本文中也延续了这一趋势。在本文中,我们将讨论如何检查哈希表集合中是否存在某个键。
那么让我们开始吧。
如何检查哈希表中是否存在某个键?
Hashtable 类提供了两种方法可以帮助我们检查哈希表中是否存在某个键。这两种方法是 ContainsKey() 和 Contains()。我们将逐一讨论这些方法。
| 方法 | 描述 |
|---|---|
| ContainsKey(object key) | 如果键存在则返回 true,否则返回 false。 |
| Contains() | 如果键存在则返回 true,否则返回 false。 |
ContainsKey() 方法
哈希表类的 ContainsKey() 方法将一个键对象作为参数,如果此键对象存在于哈希表中,则返回 true。如果具有指定键的元素不存在于哈希表中,则返回 false。
以下是 ContainsKey() 方法的通用原型。
语法
public virtual bool ContainsKey(object key);
参数
Key − 位于 Hashtable 中的 System.object 类型的键。
返回类型
True − 如果 Hashtable 包含具有指定键的元素。
False − Hashtable 不包含具有指定键的元素。
异常
ArgumentNullException − 如果键为空。
示例
以下程序演示了如何使用 ContainsKey() 方法来检查键存在于哈希表中。
using System;
using System.Collections;
class Program {
public static void Main() {
// 创建一个哈希表
Hashtable myHashTable = new Hashtable();
// 在 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);
}
}
}
在此程序中,我们有一个包含五个元素的哈希表 myHashTable。然后,程序提示用户输入要查找的密钥。当用户输入密钥时,将使用输入的密钥作为参数执行方法 ContainsKey()。如果该方法返回 true,则程序显示相应的消息。如果该方法返回 false,则表示密钥不存在,并显示相应的消息。
当用户输入密钥并且 ContainsKey() 方法返回 true 时,将生成以下输出。
输出
Enter the key which is to be found: P myHashTable contains the key=P
由于哈希表中存在具有给定键 (P) 的元素,因此 ContainsKey() 方法返回 true。然后程序会显示相应的消息。
现在让我们重新运行程序并生成第二个输出,如下所示。
输出
Enter the key whose value is to be found: X myHashTable doesn't contain the key=X
此处显示的消息表示哈希表不包含密钥。输入的密钥是 X,它不是哈希表的一部分。因此 ContainsKey() 方法返回 false。
Contains() 方法
Contains() 方法是另一种检查密钥是否存在于哈希表中的方法。与 ContainsKey() 方法一样,Contains() 方法也以密钥对象为参数并搜索哈希表以检查具有指定密钥的元素是否存在于哈希表中。
Contains() 方法的原型如下所示。
语法
public virtual bool Contains (object key);
参数
Key − 要在 Hashtable 中定位的 Key 对象。
返回类型
True − Hashtable 包含具有指定键的元素。
False − Hashtable 不包含具有指定键的元素。
异常
如果键为空,则此方法抛出ArgumentNullException。
示例
下一个程序演示了 Contains() 方法使用。
using System;
using System.Collections;
class Program {
public static void Main() {
// 创建一个哈希表
Hashtable myHashTable = new Hashtable();
// 在 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"。将调用以 key 作为参数的 contains() 方法,并在遍历哈希表后返回相应的值。根据返回的值,显示程序的输出。
当用户输入 key = F 时,程序会生成以下输出。
输出
myHashTable contains the key=F
输出表示哈希表包含键,因为具有指定键的元素存在于哈希表中,因此 Contains() 方法返回 true。
在本文中,我们讨论了 ContainsKey() 和 Contains() 方法,它们用于检查指定的键是否存在于哈希表集合中。我们还看到了编程示例来理解这个概念。我们将在后续教程中学习更多概念。

