C#基础之十六 哈希表

前言

      最近学到了一个新的概念,当时听着感觉很是陌生,所以就进行了了解,通过自己查资料也好,还是看视频也好,算是把它整理了出来,我所说的就是“哈希表”,跟大家分享一下~

分享

  • 简介:
  • 又叫“散列表”,根据关键码值(Key value)而直接进行访问的数据结构。通过把关键码值映射到表中一个位置来访问记录,从而加快查找的速度。它的映射函数叫做散列函数,存放记录的数组叫做散列表。
    • 如:给定表M,存在函数f(key),对任意给定的关键字值key,带入函数后,若能得到包含该关键字的记录在表中的地址,则称表M为哈希表,函数为哈希函数。
    • 示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace _12哈希表
{
    class Program
    {
        static void Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            //哈希表以键值对的形式存值   key---键  value---值
            ht.Add("老苏", "1001");//老苏相当于key----键,1001相当于value----值
            ht.Add("小马","1002");
            ht.Add(1003,"老牛");
            //ht.Add(new Person("小杨",'男',18),1005);
            ht.Add("老赵","小马");

            Console.WriteLine("{0}-------{1}","老苏",ht["老苏"]);
            Console.WriteLine("=================");
            foreach(var key in ht.Keys)//foreach循环
            {
                Console.WriteLine("Key{0},-------value{1}",key,ht[key]);
            }
            Console.WriteLine("添加成功了!");
            Console.ReadKey();
        }
    }
}
  • 小结:
    • 哈希表以键值对的形式存值,key——键,value—-值
    • foreach循环和for循环:
      • ①foreach循环:从头到尾一次性循环完,中间不会停下来,除了break; foreach(var key in ht.Keys)//foreach循环,此处的var可以写成object,但是不能随意写
      • ②for循环:可以随意改索引,存值,赋值
    • foreach语法:
foreach(集合中单个的类型,局部变量名in 集合对象)
{
//循环体
//循环体当中“局部变量”表示集合中遍历的数据
}
  • 简繁转换:
using System.Collections;
namespace _12简繁转换
{
    class Program
    {
        #region 简体字
        private const String jian = "丫头爱老宋,这是众所周知的事!";
        #endregion

        #region 繁体字
        private const String HXW = "老宋也愛丫頭,這也是眾所周知的事!";
        #endregion

        #region 拆分字
        private const string ChaiZiZK = "卧臣卜  项工页  功工力  斯其斤 勒革力  欧区欠  胳月各  劫去力";
        #endregion
        static void Main(string[] args)
        {
            //利用哈希表

            Hashtable ht = new Hashtable();
            //遍历所有的简体字,然后把简体字作为key 存到哈希表中,把繁体字作为value存到哈希表中

            for(int i=0;i<jian.Length ;i++)
            {
                if(!ht.ContainsKey (jian[i]))//没有的话,才添加
                {
                    ht.Add(jian[i], HXW[i]);//ht.Add('小',"曉");--后面的小是繁体字
                }

            }
            Console.WriteLine();

            #region 文章
            String text = "我要带你去浪漫的土耳其,然後一起去東京和巴黎,你说你特别喜欢迈阿密,和有黑人的洛杉矶!";
            #endregion

            string str = "";
            //遍历整个文章

            for(int i=0;i<text.Length;i++)
            {
                //判断这个哈希表中是否有这个简体字,如:有没有这个“小”
                if (ht.ContainsKey(text[i]))//判断有没有这个简体字(就是text[i]),如果有的话,替换成繁体字,没有的话,就直接写
                {
                    Console.Write(ht[text[i]]);
                }
                else
                {
                    Console.Write(text[i]);
                }
            }
            Console.ReadKey();
        }
    }
}

小结

      感觉这一块还是比较重要的,所以进行了总结与整理,现在对它只是有了一个皮毛的了解,要想深入的了解,还是得通过之后的实践,先在就先总结这么多和大家分享一下!!!

猜你喜欢

转载自blog.csdn.net/tigaobansongjiahuan8/article/details/81286404