c#中哈希表的用法

  介绍

这篇文章主要介绍“C #中哈希表的用法”,在日常操作中,相信很多人在c#中哈希表的用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“C #中哈希表的用法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

<强> 1。,哈希表(HashTable)简述

在。净框架中,哈希表是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中关键通常可用来快速查找,同时关键是区分大小写;价值用于存储对应于关键的值.Hashtable中keyvalue键值对均为对象类型,所以散列表可以支持任何类型的keyvalue键值对。

<强> 2。什么情况下使用哈希表

(1)某些数据会被高频率查询
(2)数据量大
(3)查询字段包含字符串类型
(4)数据类型不唯一

3只<强>哈希表的使用方法

哈希表需要使用的名称空间

 using  System.Collections;
  using  System.Collections.Generic; 

哈希表的基本操作:

//添加一个keyvalue键值对:
  HashtableObject.Add(关键字,值);//移除某个keyvalue键值对:
  HashtableObject.Remove(关键);//移除所有元素:,,,,,,,,,,,
  HashtableObject.Clear (),,//,判断是否包含特定键键:
  HashtableObject.Contains(关键);

控制台程序例子:

 using 系统;
  using  System.Collections,//文件使用散列表时,必须引入这个命名空间
  class 程序
  {
  public 才能;static  void 主要()
  {才能
  ,,,,Hashtable  ht =, new 散列表();,//创建一个Hashtable实例
  ,,,,ht.Add(“北京“,,“帝都“),,//添加keyvalue键值对
  ,,,,ht.Add(“上海“,,“魔都”);
  ,,,,ht.Add(“广州“,,“省会“);
  ,,,,ht.Add(“深圳“,,“特区“);
  
  ,,,,string  capital =, (string) ht(“北京“);
  ,,,,Console.WriteLine (ht.Contains(“上海“)),,//判断哈希表是否包含特定键,其返回值为真或假
  ,,,,ht.Remove(“深圳“),,//移除一个keyvalue键值对
  ,,,,ht.Clear();,//移除所有元素
  ,,}
  }

哈希表中使用多种数据类型的例子:

 using 系统;
  using  System.Collections;
  
  class 程序
  {
  ,,,static  Hashtable  GetHashtable ()
  ,,,{
  ,,,,Hashtable  Hashtable =, new 散列表();
  
  ,,,,hashtable.Add(“名字“,,“小丽”);
  ,,,,hashtable.Add(“年龄,,,22);
  ,,,,return 哈希表;
  ,,,}
  
  ,,,static  void 主要()
  ,,,{
  ,,,,Hashtable  Hashtable =, GetHashtable ();
  
  ,,,,string  name =,(字符串)散列表(“名字“);
  ,,,,Console.WriteLine(名称);
  
  ,,,,int  age =, (int)散列表(“年龄“);
  ,,,,Console.WriteLine(年龄);
  ,,,}
  }

当获取哈希表中数据时,如果类型声明的不对,会出现InvalidCastException错误。使用的语句可以避免该错误。

 using 系统;
  using  System.Collections;
  using 先;
  
  class 程序
  {
  ,,,static  void 主要()
  ,,,{
  ,,,Hashtable  Hashtable =, new 散列表();
  ,,,hashtable.Add(100年,“西安“);
  
  ,,,//,能转换成功
  ,,,string  value =,哈希表[100],as 字符串;
  ,,,if  (value  !=, null)
  ,,,{
  ,,,,,,,Console.WriteLine(价值);
  ,,,}
  
  ,,,//,转换失败,获取的值为空,但不会抛出错误。
  ,,,StreamReader  reader =,哈希表[100],as  StreamReader;
  
  ,,,if  (reader ==, null)
  ,,,{
  ,,,,,,,,Console.WriteLine(“西安不是StreamReader型“);
  ,,,}
  
  ,,,//,也可以直接获取对象值,再做判断
  ,,,object  value2 =,哈希表[100];
  ,,,if  (value2  is 字符串)
  ,,,{
  ,,,,,,,Console.Write(“这个是字符串型:,“);
  ,,,,,,,Console.WriteLine (value2);
  ,,,}
  ,,,}
  }

<>强4。遍历哈希表

遍历哈希表需要用到DictionaryEntry对象,代码如下:

<>之前(DictionaryEntry  de  ht拷贝),//ht为一个Hashtable实例   {   ,,Console.WriteLine (de.Key);,,//de.Key对应于keyvalue键值对的关键   ,,Console.WriteLine (de.Value);,,//de.Key对应于keyvalue键值对的价值   }

遍历键

 foreach  (int  key  hashtable.Keys拷贝)
  {
  ,,,Console.WriteLine(关键);
  }

遍历值

 foreach  (string  value  hashtable.Values拷贝)
  {
  ,,,Console.WriteLine(价值);
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

c#中哈希表的用法