HashTable初次体验
用惯了数组、ArryList,初次接触到HashTable、Dictionary这种字典储存对于我来说简直就是高大上。
1.到底什么是HashTable
HashTable就是哈希表,和数组一样,是一种数据储存的方式,但是相对于数组,HashTable属于乱序储存,不会按照输入的顺序进行储存。详情可以参阅MSDN关于HashTable的叙述。
对于HashTable和常用数组的区别,可以在园子里边搜索。
在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。
Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.
2.HashTable怎么用?
在哈希表中添加一个keyvalue键值对:HashtableObject.Add(key,value);
在哈希表中去除某个keyvalue键值对:HashtableObject.Remove(key);
从哈希表中移除所有元素:HashtableObject.Clear();
判断哈希表是否包含特定键key:HashtableObject.Contains(key);
1 //使用前需要先new一个hashtable 2 HashTable hashtable=new HashTable(); 3 //添加一个元素(key+value) 4 hashtable.Add("国家","省份"); 5 hashtable。Add("省","市"); 6 //移除一个元素 7 hashtabl.Remove("省"); 8 //清空 9 hashtable.Clear();
3.举个栗子
输入一句或一段英文,计算出每个字符出现的次数。(利用hashtable)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Collections; 6 7 namespace hashtable 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 //新建一个hashtable 14 Hashtable ht = new Hashtable(); 15 Console.WriteLine("Input:"); 16 //获取输入的字符串 17 string str=Console.ReadLine(); 18 int temp = str.Length;//临时储存输入字符串的长度 19 char[] sToc=new char[temp]; 20 //将输入的字符串转存为字符数组 21 sToc = str.ToCharArray(); 22 int j = 0; 23 for (int i = 0; i < temp;i++ ) 24 { 25 int x = 0;//用于记录每个字符出现的次数 26 char c = sToc[i]; 27 for (int y = i; y < temp; y++) 28 { 29 if (c == sToc[y]) 30 x++; 31 } 32 //判定hashtable中是否已经包含该键值?Y:next,N:将该键值储存到hashtable中 33 if (!ht.ContainsKey(c)) 34 { 35 ht.Add(c, x); 36 } 37 } 38 //遍历所有键值,输出 39 foreach (char strr in ht.Keys) 40 { 41 Console.WriteLine(strr+":"+ht[strr]); 42 } 43 Console.ReadKey(); 44 } 45 } 46 }
代码写的有点匆忙,没有进行过多测试,如有不足,还请各位指正。
测试截图: