HashTable通常称为哈希表,它表示键(key)/值(value)对的集合。(哈希表也就是一种特殊的集合,就是数据存储器)每个元素都是以键/值对的形式存在.就好比一个字典一样,根据键可以找到相对应的值。
例子:我们知道通讯录,通讯录里面都是一个名字对应一个电话号码,(一般情况)名字就是键,号码就是值。我们可以根据姓名查找电话,键是不可能为空的,但是值可以。
一.哈希表中的键值
key--可以是不同的数据类型,但是不能重名,而且必须存在,就像字典里面的索引一样,如果键重名了,我们无法准确我们想到找到的键所对应的值,这就间接的说明了,键是必须存在的。
Value--存放键所对应key值
无论是key还是value值,二者均是object类型,这就说明了哈希表支持所有类型的key/value键值对。
优点: 通过key找value值,这样方便索引,便于快速查找。
二、哈希表的使用方法
声明一个哈希表 :Hashtable 哈希表名 = new Hashtable(哈希表长度);
//Hashtable 哈希表名 = new Hashtable(哈希表长度);
Hashtable ha = new Hashtable();//不指定哈希表的长度将会默认为0
Hashtable元素的添加:HashTable.add(key,value); 可以添加任何类型的数据,key不为空。
static void Main(string[] args)
{
//Hashtable 哈希表名 = new Hashtable(哈希表长度);
Hashtable ha = new Hashtable();//不指定哈希表的长度将会默认为0
ha.Add(1,"佳兴");
ha.Add(2, "狗狗哲");
ha.Add(3, "狗狗雷");
ha.Add(4, "小猪佩奇");
ha.Add("int", 1.2);
ha.Add("double", 2);
ha.Add("bool", false);
Console.WriteLine("哈希表中的个数为:{0}",ha.Count);
Console.ReadKey();
}
HashTable元素的删除:HashTable.Clear();
ha.Clear();//清空哈希表中的元素
Console.WriteLine("哈希表中的个数为:{0}", ha.Count);
HashTable元素的移除:HashTable.Remove();
ha.Add("double", 2);
ha.Add("bool", false);
ha.Remove("bool");//移除键值为bool的元素
Console.WriteLine("哈希表中的个数为:{0}", ha.Count);
Console.ReadKey();
HashTable元素的获取:通过访问键,来访问HashTable里面的值,即哈希表名[键值]
ha.Add(1, "佳兴");
ha.Add("bool", false);
Console.WriteLine(ha[1]);//通过访问键,来访问HashTable里面的值
Console.WriteLine(ha["bool"]);
Console.ReadKey();
HashTable元素的遍历:for eash 语句进行遍历
ha.Add(1, "佳兴");
ha.Add("bool", false);
foreach ( var str in ha.Keys)//var是一种类型,可以在这进行断点调试,将鼠标放在var上,查看是什么类型,就写什么类型,var是可以更改的。
{
Console.WriteLine("key{0}---value{1}",str,ha[str]);
}
Console.ReadKey();
HashTable的查找
HashTable.Contains 和HashTable.ContainsKey 判断哈希表表中是否含有指定的键,存在就是true,不存在就是false
HashTable.ContainsValue 判断哈希表中是否含有指定的值,存在就是true,不存在就是false
ha.Add(1, "佳兴"); ha.Add("bool", false); ha.Add(2, "狗狗哲"); Console.WriteLine(ha.Contains(2)); Console.WriteLine(ha.ContainsKey(1)); Console.WriteLine(ha.ContainsValue(1));
字典(Dictionary )
字典和哈希表一样,也是集合,以键值对的形式存在。
字典里面添加数据,并遍历所有元素
static void Main(string[] args) { //尖括号里面分别是key和value的类型 Dictionary<string,string> dic=new Dictionary<string ,string>(); //和哈希表很像,无序的 dic.Add("佳兴","好帅"); dic.Add("皮皮虾","小猪佩奇"); foreach (string item in dic.Keys) //遍历出key { Console.WriteLine("key{0},,,,,,value{1}",item,dic[item]); //value值与key对应 ,也可以写成item.key,item.value } Console.ReadKey();
哈希表和字典的关系
相同点:都是以键值对的形式存在,键必须是唯一的,值不需要是唯一的。
存数据的个数也不受限制。
都可以以foreach遍历存数据的个数,不受限。
方法很相似。
不同点:键和值的类型取决于定义字典时的设置类型。
字典不用导入命名空间,哈希表需要导入命名空间
字典村塾数据限制了类型,哈希表不限制类型
关于哈希表和字典就先的介绍到这里吧,最近给大家写一些篇幅短小,通俗易懂的,这样会增加大家的成就感。
PS:进来的小哥哥,小姐姐,记得点个赞哦。