C#非泛型集合类-使用HashTable元素操作

在.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); //输出键和值
    }

}
}

注意:哈希表中键值必须是唯一的,不能有相同的键,如果使用已存在的键值来存储数据,将会抛出异常。

posted on 2012-06-29 09:41  流星落  阅读(363)  评论(0编辑  收藏  举报

导航