前言
最近学到了一个新的概念,当时听着感觉很是陌生,所以就进行了了解,通过自己查资料也好,还是看视频也好,算是把它整理了出来,我所说的就是“哈希表”,跟大家分享一下~
分享
- 简介:
- 又叫“散列表”,根据关键码值(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();
}
}
}
小结
感觉这一块还是比较重要的,所以进行了总结与整理,现在对它只是有了一个皮毛的了解,要想深入的了解,还是得通过之后的实践,先在就先总结这么多和大家分享一下!!!