在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key/ Value键值对均为object类型,所以Hashtable可以支持任何类型的key /Value键值对。
和ArrayList相同,HashTable集合也有增、删、改、查等操作。给哈希表添加元素,使用Add()方法,示例代码如下:
Hashtable ht=new Hashtable();//创建哈希表
一、为哈希表添加元素ht.Add("张三",1001);ht.Add("李四",1002);ht.Add("王五",1003);二、删除哈希表中元素删除哈希表中元素有两种方法,Clear()方法删除所有元素,Remove方法根据键来删除元素。ht.Remove("赵敏");//删除键为赵敏的元素ht.Clear;//删除所有元素三、修改哈希表中元素哈希表的键是不可以修改的,只能修改键对应的值。修改哈希表中的数据采用索引方式,按照键修改对应的值。下面代码将为“周芷若”的值修改为等号右边的值,示例代码如下:ht["周芷若"]=1005;四、访问哈希表中元素访问哈希表元素时,可以直接通过键名来获取具体值。由于哈希表存储的元素都是Object数据类型,所以对访问的元素要注意类型转换。string str=ht["张三"].ToString();五、遍历哈希表哈希表和ArrayList不同,不能通过索引访问,只能使用foreach来遍历集合中的元素。下面的代码获取哈希表的值://foreach遍历哈希表的值
foreach(Objcet str in ht.Value){ string s=(string)stu;//将对象强制转换Console.WriteLine(s);//输出值}用foreach语句可以访问哈希表的值,也可以访问哈希表的键值。//foreach遍历哈希表的键
foreach(Objcet str in ht.Keys){ string s=(string)stu;//将对象强制转换Console.WriteLine(s);//输出值}使用字典对象及遍历哈希表集合,可以获取哈希表集合中的键和值。
//foreach遍历哈希表集合foreach(DictionaryEntry myde in ht){ Console.WriteLine("\t{0}\t{1}",myde.Key,myde.Value);//输出键和值}下面看一下实例:
using System;using System.Collections;class Program{ static void Main(){ //创建哈希表 Hashtable ht = new Hashtable(); ht.Add("banana", "香蕉"); ht.Add("apple", "苹果"); ht.Add("pineapple", "菠萝"); ht.Add("orange", "桔子"); //使用索引器查询 string s = (string)ht["banana"]; Console.WriteLine("使用索引器查询键为{0}", s); //使用键集合遍历哈希表 Console.WriteLine("通过键遍历哈希表集合得到的值"); foreach (string mykey in ht.Keys) { string s1 = (string)ht[mykey]; //将对象强制转换 Console.WriteLine(s1); //输出值 } //遍历集合中的元素获取值 Console.WriteLine("通过遍历哈希表集合中的元素获取值"); foreach (object obj in ht.Values) { string str = (string)obj; //将对象强制转换 Console.WriteLine(str); //输出值 } //使用字典遍历哈希表集合 Console.WriteLine("通过字典遍历得到键和值"); foreach (DictionaryEntry dic in ht) { //得到键和值,返回object类型,需进行数据类型转换。 string key = (string)dic.Key; string value=(string)dic.Value; Console.WriteLine("\t{0}\t{1}",key,value); //输出键和值 }}
}注意:哈希表中键值必须是唯一的,不能有相同的键,如果使用已存在的键值来存储数据,将会抛出异常。