C#——哈希表

    xiaoxiao2021-03-25  61

    前言:

            C#视频中提到了哈希表,这个词有点新鲜,以前没接触过,而且看完视频以后觉得对这个哈希表的理解还是有点晕乎乎的,所以我就上网去查了一下有关哈希表的介绍。

    什么是哈希表?

           哈希表,也叫散列表,是根绝关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中的一个位置来访问记录,以加快查找速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

           给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希函数。

    Hashtable方法

    1、  添加数据

    添加数据都是以“键值对”的形式。比如:

    Hashtable ht = new Hashtable(); ht.Add("2017", "你好");//Key值为‘2017’,value值为‘你好’

    2、  “键值对”均是object类型

    因为我们添加的数据的类型不能确定是什么类型,所以我们可以采用最高等级的类型——object类型

    3、必须有Key键,且Key键不能重复。  

    “键值对”中Key键不能重复,否则对value值定义无效。当不包含Key值,只有value时,value值无意义且不显示。

    4、Hashtable读取  

    Hashtable使用键作为寻找的方式,是一种无序的结构。也就是说,当我们读取hashtable中存取的值的时候,读取到的数据是乱序的。

    Foreach循环

    循环结构

    foreach (数据类型 标识符 in 表达式) { //循环体 //循环体中“局部变量”表示集合中遍历的数据 }

    其中 标识符 可以修改为自己的一个命名(不与系统中默认字段冲突的),比如,默认的foreach循环是

    foreach (varitem in collection) { //循环体 //循环体中“局部变量”表示集合中遍历的数据 }

    但是我们经过修改可以变成

    foreach (objectabc in collection) { //循环体 //循环体中“局部变量”表示集合中遍历的数据 }

    将var变为object后,可容性更高一些,我们可以利用哈希表进行繁简转换,将简体字作为Key值,繁体字作为value值,经过与Key值的对比可以翻译为对应的value值,达到翻译的过程。

    #region 简体字 private const string Jian = "我从山中来,带得兰花草。"; #endregion #region 繁体字 private const string HXw = "我從山中來,帶得蘭花草。"; #endregion #region 文章 private const string text = "我从山中带的兰花。"; #endregion static void Main(string[] args) { //利用哈希表进行繁简转换 Hashtable ht = new Hashtable(); for (int i = 0; i < Jian.Length;i++) { ht.Add(Jian[i],HXw[i]); } //Console.ReadKey(); for (int i = 0; i < text.Length;i++) { if (ht.ContainsKey(text[i])) { Console.Write(ht[text[i]]); } else { Console.Write(text[i]); } } Console.ReadKey(); }

    输出结果为:

    需要注意的是,foreach循环一旦开始,除非遇到break,否则会一直循环到结束。

    总结:

            以上代码均经作者亲自测试,初学哈希表,个人理解难免有些偏差,希望大家多多指正。

    转载请注明原文地址: https://ju.6miu.com/read-33612.html

    最新回复(0)