首页 > 代码库 > HashTable初次体验

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一个hashtable2 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 Program10     {11         static void Main(string[] args)12         {13             //新建一个hashtable14             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 }

代码写的有点匆忙,没有进行过多测试,如有不足,还请各位指正。

测试截图:

HashTable初次体验