如何在 C# 中从哈希表集合中删除项?


C# 中的哈希表是键值对的集合,这些键值对根据键的哈希码进行组织。哈希表中的项使用键进行访问。C# 的 Hashtable 类是实现哈希表的类。

使用此类,我们可以借助提供的构造函数创建新的哈希表对象。Hashtable 类还提供各种方法,我们可以使用这些方法对哈希表执行各种操作。这些操作包括添加项、检查指定键是否存在、计数项数、从哈希表中删除项等等。

在本文中,我们将讨论从给定指定键的哈希表集合中删除项。

如何从哈希表集合中删除项?

Hashtable 类提供了一个名为“Remove”的方法来从哈希表集合中删除/移除项。给定一个键,Remove 方法将从哈希表中删除具有指定键的项。

Remove 方法的原型如下所示。

语法

public virtual void Remove (object key);

参数

  • Key - 要从哈希表集合中删除的元素的键。其类型为 System.Object。

实现

IDictionary 接口的 Remove(Object) 方法。

异常

  • ArgumentNullException - 如果指定的键为空,则抛出此异常。

  • NotSupportedException - 如果哈希表大小固定或为只读,则抛出。

如果哈希表中不存在指定的键,“Remove()”方法不会抛出任何异常。如果键不存在,哈希表将保持不变,程序将成功执行。

Remove() 方法的编程示例

示例 1

以下程序演示了如何使用 Remove() 方法从哈希表集合中删除项。

using System; using System.Collections; class MyHashTable { public static void Main(){ // Creating a Hashtable Hashtable numberNames = new Hashtable(); // Adding elements in Hashtable numberNames.Add("2", "Two"); numberNames.Add("13", "Thirteen"); numberNames.Add("24", "Twenty Four"); numberNames.Add("59", "Fifty Nine"); // Print the contents of Hashtable Console.WriteLine("**********Contents of Hashtable**********"); foreach(var item in numberNames.Keys){ Console.WriteLine("key ={0}, Value = {1}", item,numberNames[item]); } //read the key for which element is to be deleted Console.WriteLine("
Enter the key for which the element is to be removed from Hashtable "
); string key = (string)Console.ReadLine(); //remove the element numberNames.Remove(key); //display the hashtable after deletion Console.WriteLine("
******Contents of Hashtable(after deletion)******"
); foreach(var item in numberNames.Keys){ Console.WriteLine("key ={0}, Value = {1}", item,numberNames[item]); } } }

在此程序中,首先,我们创建了一个哈希表,其中数字作为键,其对应的数字名称作为值。然后在屏幕上显示哈希表。接下来,提示用户输入要从哈希表中删除其元素的键。输入键后,将使用此键作为参数调用 Remove() 方法。接下来,再次显示哈希表内容。如果哈希表中存在该键,则 Remove() 方法将删除该元素,否则,哈希表将保持不变。

输出

程序生成以下输出。

**********Contents of Hashtable**********
key =59, Value = Fifty Nine
key =24, Value = Twenty Four
key =13, Value = Thirteen
key =2, Value = Two

Enter the key for which the element is to be removed from Hashtable 
13
******Contents of Hashtable(after deletion)******
key =59, Value = Fifty Nine
key =24, Value = Twenty Four
key =2, Value = Two

以上输出显示了删除前后哈希表内容之间的差异。

现在让我们看看当用户输入的键在哈希表中不存在时输出如何变化。在这种情况下,如前所述,哈希表保持不变,并且不会抛出任何异常。以下是上述程序生成的输出。

输出

**********Contents of Hashtable**********
key =59, Value = Fifty Nine
key =24, Value = Twenty Four
key =13, Value = Thirteen
key =2, Value = Two

Enter the key for which the element is to be removed from Hashtable 
3
******Contents of Hashtable(after deletion)******
key =59, Value = Fifty Nine
key =24, Value = Twenty Four
key =13, Value = Thirteen
key =2, Value = Two

这里,用户输入了键 = 3,该键在哈希表中不存在。在这种情况下,哈希表保持不变,因为 Remove() 方法没有删除任何元素。

示例 2

现在让我们考虑另一个哈希表删除的示例。该程序如下所示。

using System; using System.Collections; public class myHashtable{ public static void Main(){ // Create a new Hashtable. var tongueTwister = new Hashtable(); tongueTwister.Add("1a", "She"); tongueTwister.Add("1b", "sells"); tongueTwister.Add("1c", "sea"); tongueTwister.Add("2a", "shells"); tongueTwister.Add("2b", "on"); tongueTwister.Add("2c", "the"); tongueTwister.Add("3a", "sea"); tongueTwister.Add("3b", "shore"); // Displays the Hashtable. Console.WriteLine("The Hashtable initially contains the following:
"
); foreach (DictionaryEntry elem in tongueTwister) Console.WriteLine($" {elem.Key}: {elem.Value}"); Console.WriteLine(); // Removes the element with the specified key. string key =3b”; tongueTwister.Remove(key); // Displays the Hashtable after deletion. Console.WriteLine("
Hashtable after removing the key = "
{0}":",key); foreach (DictionaryEntry elem in tonguetwister) Console.WriteLine($" {elem.Key}: {elem.Value}"); Console.WriteLine(); } }

在此程序中,我们有一个哈希表,其中包含绕口令“She sells sea shells on the seashore”。我们已将键编号为 1a、1b、1c、2a、2b 等。首先,我们显示了整个哈希表。然后我们使用 Remove() 方法并删除键 = 3b 的元素。再次显示新更新的哈希表。

输出

程序生成以下输出。

The Hashtable initially contains the following:
    3b:    shore
    1a:    She
    1b:    sells
    2b:    on
    2c:    the
    3a:    sea
    2a:    shells
    1c:    sea

Hashtable after removing the key =  "3b":
    1a:    She
    1b:    sells
    2b:    on
    2c:    the
    3a:    sea
    2a:    shells
    1c:    sea
Note the hashtable after deleting the key = 3b.

Hashtable 类的 Remove() 方法用于一次删除或移除哈希表中的元素。如果哈希表中不存在指定的键(方法的参数),Remove() 方法不会抛出异常。它将简单地继续执行程序,而不会更改哈希表。

这就是关于给定指定键从哈希表集合中删除项的 Remove() 方法的所有内容。

更新于: 2022年12月14日

330 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告