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 }

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

测试截图:

posted @ 2014-09-28 09:27  Dranched  阅读(1133)  评论(0编辑  收藏  举报