C#实战学习(十)—哈希表(HashTable)与字典(Dictionary )

  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:进来的小哥哥,小姐姐,记得点个赞哦。


猜你喜欢

转载自blog.csdn.net/fjxcsdn/article/details/80136822