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

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

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

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

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

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

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

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

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

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

下面给出了哈希表集合的Add()方法的一般原型。

语法

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

参数

Key – 正在添加的元素的指定键(类型 System.Object)。应为非空。

Value – 元素的指定值(类型 System.Object)此值可以为 null。

异常:此方法抛出以下异常。

ArgumentNullException − 当键为 null 时。

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

NotSupportedException − 哈希表具有固定大小或只读。

如果我们有一个哈希表对象声明如下 –

Hashtable hshTable = new Hashtable();

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

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

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

hshTable.Add(1, 2022);

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

hshTable[3] = "three";

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

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

以下程序演示了如何使用 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();   }}

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

输出

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

Hashtable already has an element with Key = '2'.*********HashTable Elements********Key = 2, Value = Key = msg, Value = CollectionKey = 3, Value = TutorialKey = site, Value = HashTableKey = 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 Number9: Odd Number2: Even and Prime Number4: Even Number

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

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

以上就是如何在 C# 中向哈希表集合添加项目的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1435350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 11:02:50
下一篇 2025年12月14日 07:58:39

相关推荐

  • 面向开发人员的.NET性能优化技术

    如果你是一名.net开发者,你必须意识到在交付高质量软件方面,优化功能和性能的重要性。通过熟练使用提供的资源并减少网站加载时间,你不仅为用户创造了愉快的体验,还能减少基础设施成本。 在本文中,我们将介绍每个.NET开发公司都应该了解的.NET性能优化技术。 常见的性能瓶颈 在我们介绍性能技术之前,让…

    好文分享 2025年12月17日
    000
  • C# 程序在三个排序数组中查找公共元素

    首先,初始化三个排序数组 – int []one = {20, 35, 57, 70};int []two = {9, 35, 57, 70, 92};int []three = {25, 35, 55, 57, 67, 70}; 要查找三排序数组中的公共元素,请使用 while 循环迭…

    2025年12月17日
    000
  • Asp.Net webAPI C# 中 DelegatingHandler 的用法是什么?

    在消息处理程序中,一系列消息处理程序链接在一起。第一个处理程序接收 HTTP 请求,进行一些处理,然后将请求交给下一个处理程序。在某个时刻,响应会被创建并返回到链上。这种模式称为委托处理程序。 除了内置的服务器端消息处理程序之外,我们还可以创建自己的服务器端 HTTP 消息处理程序。 创建自定义服务…

    2025年12月17日
    000
  • C#中什么是拆箱?

    拳击是隐式的,拆箱是显式的。拆箱是将由装箱创建的引用类型显式转换回值类型。 让我们看一个C#中变量和对象的例子 − // intint x = 30;// Boxingobject obj = x;// Un boxingint unboxInt = (int) obj; 以下是一个示例,展示了Un…

    2025年12月17日
    000
  • C# 中的最终局部变量

    要为局部变量设置final,请在C#中使用只读关键字,因为不可能实现final关键字的实现。 只读关键字允许变量只能被赋值一次。标记为“只读”的字段只能在对象构造期间设置一次,不能更改。 让我们看一个例子。下面,我们将empCount字段设置为只读,一旦赋值就不能更改。 示例 class Depar…

    2025年12月17日
    000
  • C# 中类的受保护成员变量的作用域是什么?

    受保护的访问说明符允许子类访问其基类的成员变量和成员函数。这样有助于实现继承。我们将在继承章节中更详细地讨论这一点。 下面是一个示例,显示我们在 A 类中设置了一个 protected 成员变量。 class A { protected int a2 = 87;} 现在在派生类下,当我们尝试从派生类…

    2025年12月17日
    000
  • C# 中的内聚性

    C#中的内聚性显示了模块之间的关系。它显示了模块的功能强度。内聚性越高,程序设计就越好。 它是模块内部元素(如方法和内部模块)之间的依赖关系。高内聚力将允许您重用类和方法。 高内聚的示例可以在 System.Math 类中看到,即它具有数学常量和静态方法 – Math.AbsMath.P…

    2025年12月17日
    000
  • 如何使用C# BinaryReader类?

    如果要从流中读取二进制信息,请使用 BinaryReader 类。 BinaryReader 类位于 System.IO 命名空间中。 以下是显示使用BinaryReader 类从文件中读取 – static void WriteMe() { using (BinaryWriter w …

    2025年12月17日
    000
  • C# 中根据键对 HashMap 进行排序

    HashMap 是 Java 语言,而不是 C# 语言。 C#中的HashMap相当于Dictionary,用作键值对的集合。 首先,设置Dictionary – Dictionary d = new Dictionary();d.Add(“soccer”, 1);d.Add(“cric…

    2025年12月17日
    000
  • C# 中的包

    作为 Java 中包的替代方案,C# 语言具有命名空间。 Java 中的包 Java 中使用包是为了防止命名冲突、控制访问、使类、接口、枚举和注释等的搜索/定位和使用更容易。 C# 中的命名空间 命名空间旨在提供一种保留一组名称的方法与另一个分开。在一个命名空间中声明的类名不会与在另一个命名空间中声…

    2025年12月17日
    000
  • C# 中的泛型

    泛型允许您编写可用于任何数据类型的类或方法。 编写类或方法的规范,并使用数据类型的替代参数。当编译器遇到类的构造函数或方法的函数调用时,它会生成处理特定数据类型的代码。  泛型是一种通过以下方式丰富您的程序的技术− 它可以帮助您最大限度地提高代码重用性、类型安全性和性能。 您可以创建通用集合类。 .…

    2025年12月17日
    000
  • 检查 C# 中给定范围是否相等

    作为程序员,我们经常遇到需要在 C# 等编程语言中比较两个范围的情况。无论我们正在研究复杂的算法还是简单的程序,检查两个范围是否相等都是一项关键任务。本文将讨论在 C# 中比较两个给定范围的过程和方法,为这一常见问题提供简单的解决方案。 理解C#中的范围 在我们继续解决问题之前,深入了解 C# 编程…

    2025年12月17日
    000
  • C# 中的哈希表与字典

    哈希表 当需要使用键来访问元素时,就会使用哈希表,并且可以识别有用的键值。哈希表中的每个项目都有一个键/值对。键用于访问集合中的项目。 哈希表中的成员是线程安全的。如果我们尝试查找不存在的键,它将返回 null。 Hashtable 不是泛型类型。 Hashtable 集合比字典慢,因为它需要装箱和…

    2025年12月17日
    000
  • C# 字符串方法

    String 类有许多方法可以帮助您处理字符串对象。下表列出了一些最常用的方法 – Sr.No 方法及说明 1 public static int Compare(string strA, string strB) 比较两个指定的字符串对象并返回一个整数,指示它们在排序顺序中的相对位置。…

    2025年12月17日
    000
  • 在 C# 中如何将整数转换为十六进制,反之亦然?

    将整数转换为十六进制 可以使用 string.ToString() 扩展方法将整数转换为十六进制。 Integer Value: 500Hexadecimal Value: 1F4 Converting Hexadecimal to Integer − A hexadecimal value can…

    2025年12月17日
    000
  • C# 中 Double 的字符串格式

    在 C# 中使用静态方法 String.Format 形成双字符串格式。 对于三位小数 – String.Format(“{0:0.000}”, 987.383);String.Format(“{0:0.000}”, 987.38);String.Format(“{0:0.000}”, …

    2025年12月17日
    000
  • C#中如果文件夹不存在如何创建?

    为了创建目录,我们必须首先在c#中导入system.io命名空间。命名空间是一个库,允许您访问用于创建、复制、移动和删除目录的静态方法。 始终建议在 C# 中执行任何文件操作之前检查目录是否存在,因为编译器如果文件夹不存在,将抛出异常。 示例 using System;using System.IO…

    2025年12月17日
    000
  • C# 中的类型转换是什么?

    类型转换是将一种数据类型转换为另一种类型。这两种形式是 – 隐式类型转换 – 这些转换由 C# 以类型安全的方式执行。例如,从小到大的整型类型的转换以及从派生类到基类的转换。 显式类型转换 – 这些转换是由用户使用预定义的类型显式完成的功能。显式转换需要强制转换运…

    2025年12月17日
    000
  • 检查路径是否有 C# 中的文件扩展名

    在广阔的编程世界中,C# 已成为一种强大、灵活且面向对象的语言,广泛用于创建 Windows 应用程序、Web 服务和游戏。开发人员经常发现自己需要执行的常见任务之一是检查路径是否具有文件扩展名。在本文中,我们将深入探讨如何在 C# 中完成此任务的详细信息。 C# 中的路径处理简介 在继续讨论主题之…

    2025年12月17日
    000
  • C# 程序查找字符串中的所有子字符串

    使用 C# 中的 substring() 方法查找字符串中的所有子字符串。 假设我们的字符串是 – Xyz 循环遍历字符串的长度并从字符串的开头到结尾使用 Substring 函数 – for (int start = 0; start <= str.Length – …

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信