如何在C#中向Hashtable集合添加项
我们已经讨论了哈希表的基础知识。C#中的哈希表集合用于存储键值对,其中每个键值对都根据键的哈希码进行组织。此哈希码是使用哈希码函数计算的。在内部,哈希表使用桶来存储数据。桶只不过是哈希表中元素的虚拟组。每个桶都与一个哈希码相关联。
从编程角度来看,哈希表类似于字典对象,但与字典对象不同的是,哈希表可以存储不同数据类型的对象。在性能方面,哈希表的性能较低,因为哈希表的元素是对象。因此,必须对对象的装箱和拆箱操作才能从哈希表中存储和检索值。
在本文中,让我们讨论如何向哈希表集合添加项。
如何向Hashtable集合添加项?
C#中的Hashtable集合是使用Hashtable类实现的。此类提供各种方法来对哈希表执行不同的操作。其中一种方法是Add()。
Hashtable类的Add()方法用于在哈希表中添加具有指定键及其对应值的元素。向哈希表添加键值对时,应确保键不重复或为空,因为哈希表只允许非空且唯一的键。
在C#的哈希表集合中,我们可以有不同数据类型的键值对元素。
现在让我们继续学习Add()方法。
下面给出哈希表集合的Add()方法的通用原型。
语法
public virtual void Add(object key, object value);
参数
Key - 要添加的元素的指定键(System.Object类型)。必须是非空的。
Value - 元素的指定值(System.Object类型)。此值可以为空。
异常:此方法抛出以下异常。
ArgumentNullException - 当键为空时。
ArgumentException - 已存在具有相同键的元素。
NotSupportedException - Hashtable大小固定或为只读。
如果我们声明了一个如下所示的Hashtable对象:
Hashtable hshTable = new Hashtable();
然后,我们可以使用Add()方法向此Hashtable对象添加元素,如下所示:
hshTable.Add("msg", "charVal");
由于Hashtable允许混合数据类型的元素,因此我们也可以在同一个Hashtable中添加数值:
hshTable.Add(1, 2022);
除了使用Add()方法外,我们还可以直接将值赋值给Hashtable。例如,要添加一个键为2的元素,我们可以简单地编写:
hshTable[3] = "three";
以上语句将在哈希表中创建一个键值对(3,“three”)。
向Hashtable集合添加项的编程示例
以下程序演示了Add()方法来构建一个包含不同元素的哈希表。
示例1
using System; using System.Collections; class Program { static void Main(string[] args) { Hashtable mixedHashTable = new Hashtable(); //add method mixedHashTable.Add("msg", "Collection"); mixedHashTable.Add("site", "HashTable"); mixedHashTable.Add(1, 3.14); mixedHashTable.Add(2, null); //assign value to the key mixedHashTable[3] = "Tutorial"; // Add method throws an exception if the key already exists in //hashtable try { mixedHashTable.Add(2, 750); } catch { Console.WriteLine("Hashtable already has an element with Key = '2'."); } Console.WriteLine("*********HashTable Elements********"); // It will return elements as Key-Value Pair. foreach (DictionaryEntry elem in mixedHashTable) { Console.WriteLine("Key = {0}, Value = {1}", elem.Key, elem.Value); } Console.ReadLine(); } }
上述程序首先使用默认构造函数创建一个Hashtable对象。然后,它使用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 { // Driver code public static void Main() { // Creating a Hashtable Hashtable strHashTable = new Hashtable(); // Adding elements in 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"); // Get a collection of the keys. ICollection c = strHashTable.Keys; // Displaying the hashtable contents 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的操作。