如何在 C# 中向哈希表集合添加项

csharpserver side programmingprogramming更新于 2025/5/14 22:07:17

我们已经讨论了哈希表的基础知识。C# 中的哈希表集合用于存储键值对,其中每个键值对都基于键的哈希码进行组织。此哈希码是使用哈希码函数计算的。在内部,哈希表使用存储桶来存储数据。存储桶只不过是哈希表中的虚拟元素组。哈希码与每个存储桶相关联。

从编程上讲,哈希表类似于字典对象,但与字典对象不同,哈希表可以存储不同数据类型的对象。从性能上讲,哈希表的性能较低,因为哈希表的数据元素是对象。因此,必须对对象进行装箱和拆箱,以便存储和检索哈希表中的值。

在本文中,让我们讨论如何将项目添加到哈希表集合中。

如何将项目添加到哈希表集合?

C# 中的 哈希表 集合是使用哈希表类实现的。此类提供了各种方法来对哈希表执行不同的操作。其中一种方法是 Add()。

哈希表类的 Add() 方法用于在哈希表中添加具有指定键及其对应值的元素。在向哈希表添加键值对时,我们应该确保键不重复或为空,因为哈希表只允许非空且唯一的键。

在 C# 的哈希表集合中,我们可以拥有不同数据类型的键/值对元素。

现在让我们继续讨论 Add() 方法。

哈希表集合的 Add() 方法的通用原型如下所示。

语法

public virtual void Add(object key, object value);

参数

  • Key − 所添加元素的指定键(类型为 System.Object)。应为非空值。

  • Value − 元素的指定值(类型为 System.Object)此值可以为空值。

异常:此方法会引发以下异常。

  • ArgumentNullException − 当键为空时。

  • ArgumentException − 已存在具有相同键的元素。

  • NotSupportedException − Hashtable 具有固定大小或只读。

如果我们有一个如下所示声明的哈希表对象 -

Hashtable hshTable = new Hashtable();

然后我们可以使用 Add() 方法向该哈希表对象添加一个元素,如下所示 -

hshTable.Add("msg", "charVal");

由于哈希表允许混合数据类型的元素,因此我们也可以在同一个哈希表中添加一个数值 -

hshTable.Add(1, 2022);

除了使用 Add() 方法,我们还可以将值直接分配给哈希表。例如,要添加一个 key = 2 的元素,我们可以简单地写,

hshTable[3] = "three";

上述语句将在哈希表中创建一个键值对(3,"three")。

向哈希表集合添加项目的编程示例

以下程序显示了 Add() 方法演示,用于构建不同元素的哈希表。

示例 1

using System;
using System.Collections;
class Program {
   static void Main(string[] args) {
      Hashtable mixedHashTable = new Hashtable();
      //添加方法
      mixedHashTable.Add("msg", "Collection");
      mixedHashTable.Add("site", "HashTable");
      mixedHashTable.Add(1, 3.14);
      mixedHashTable.Add(2, null);

      //为键分配值
      mixedHashTable[3] = "Tutorial";

      // 如果键已经存在于哈希表中,则 Add 方法会引发异常
      try {
         mixedHashTable.Add(2, 750);
      } catch {
         Console.WriteLine("Hashtable already has an element with Key = '2'.");
      }
      Console.WriteLine("*********HashTable Elements********");
      // 它将以键值对的形式返回元素。
      foreach (DictionaryEntry elem in mixedHashTable) {
         Console.WriteLine("Key = {0}, Value = {1}", elem.Key, elem.Value);
      }
      Console.ReadLine();
   }
}

上述程序首先使用默认构造函数创建一个哈希表对象。然后它使用 Add() 方法向哈希表添加不同的元素。我们也可以通过直接分配值来向哈希表添加元素。上述程序将不同数据类型的键值对添加到哈希表中。然后使用迭代器逐一显示哈希表的元素。

输出

上述示例的输出如下所示 −

Hashtable already has an element with Key = '2'.
*********HashTable Elements********
Key = 2, Value = 
Key = msg, Value = Collection
Key = 3, Value = Tutorial
Key = site, Value = HashTable
Key = 1, Value = 3.14

输出显示了我们已添加到哈希表的所有键值对。

我们再举一个向哈希表添加元素的例子。程序如下所示。

示例 2

using System;
using System.Collections;
class hTable {
   // 驱动代码
   public static void Main() {
      // 创建一个哈希表
      Hashtable strHashTable = new Hashtable();

      // 在 Hashtable 中添加元素
      strHashTable.Add("4", "Even Number");
      strHashTable.Add("9", "Odd Number");
      strHashTable.Add("5", "Odd and Prime Number");
      strHashTable.Add("2", "Even and Prime Number");

      // 获取键的集合。
      ICollection c = strHashTable.Keys;

      // 显示哈希表内容
      Console.WriteLine("=========Contents of the Hashtable=========");
      foreach(string str in c)
         Console.WriteLine(str + ": " + strHashTable[str]);
   }
}

在此程序中,我们添加字符串类型的值。我们使用 Add() 方法添加值,然后检索哈希表中的键集合。然后,使用 foreach 循环遍历此键集合并显示每个键及其对应的值。

输出

生成的输出如下 −

=========Contents of the Hashtable=========
5: Odd and Prime Number
9: Odd Number
2: Even and Prime Number
4: Even Number

通过这种方式,我们可以使用 hashtable 类的 Add() 方法将项目添加到 hashtable 集合中。

在本文中,我们了解了如何将项目添加到 Hashtable 集合中。在后续文章中,我们将讨论有关 Hashtable 的更多操作。


相关文章