HashTable初次体验

时间:2022-11-12 13:45:35

用惯了数组、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);

 //使用前需要先new一个hashtable
HashTable hashtable=new HashTable();
//添加一个元素(key+value)
hashtable.Add("国家","省份");
hashtable。Add("省","市");
//移除一个元素
hashtabl.Remove("省");
//清空
hashtable.Clear();

3.举个栗子
  输入一句或一段英文,计算出每个字符出现的次数。(利用hashtable)

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections; namespace hashtable
{
class Program
{
static void Main(string[] args)
{
//新建一个hashtable
Hashtable ht = new Hashtable();
Console.WriteLine("Input:");
//获取输入的字符串
string str=Console.ReadLine();
int temp = str.Length;//临时储存输入字符串的长度
char[] sToc=new char[temp];
//将输入的字符串转存为字符数组
sToc = str.ToCharArray();
int j = ;
for (int i = ; i < temp;i++ )
{
int x = ;//用于记录每个字符出现的次数
char c = sToc[i];
for (int y = i; y < temp; y++)
{
if (c == sToc[y])
x++;
}
//判定hashtable中是否已经包含该键值?Y:next,N:将该键值储存到hashtable中
if (!ht.ContainsKey(c))
{
ht.Add(c, x);
}
}
//遍历所有键值,输出
foreach (char strr in ht.Keys)
{
Console.WriteLine(strr+":"+ht[strr]);
}
Console.ReadKey();
}
}
}

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

测试截图:

HashTable初次体验