C#中哈希表(Hashtable)简单用法

本文深入解析了哈希表这一高效数据结构的特点与优势,详细介绍了其在.NET Framework中的实现方式,包括Hashtable类的基本操作、使用示例及类型转换技巧,并提供了遍历和排序的实用代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.哈希表简述(转载)

  哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级。哈希表也有一些缺点它是基于数组的,数组创建后难于扩展某些哈希表被基本填满时,性能下降得非常严重,所以程序虽必须要清楚表中将要存储多少数据(或者准备好定期地把数据转移到更大的哈希表中,这是个费时的过程。

  在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.

2.哈希表用法

1)命名空间

       using System.Collections;
       using System.Collections.Generic;

2)基本操作

       //添加一个keyvalue键值对:
       HashtableObject.Add(key,value);
       //移除某个keyvalue键值对:
       HashtableObject.Remove(key);
       //移除所有元素:          
       HashtableObject.Clear();
       // 判断是否包含特定键key:
       HashtableObject.Contains(key);

3)例子

        Hashtable ht = new Hashtable();
        ht.Add("1706010315", "小张");
        ht.Add("1706010316", "小王");
        ht.Add("1706010317", "小李");
        ht.Add("1706010318", "小红");

        string mate = (string)ht["1706010315"]; //根据键值取元素
        bool exist = ht.Contains("1706010316"); //哈希表中是否含有特定键
        ht.Remove("1706010315"); //移除一个
        ht.Clear(); //移除全部            

4)类型转换

        ht.Add("1806010712", "小强");
        //能转换成功
        string value = ht["1806010712"] as string;
        if (value != null)
        {
            Console.WriteLine(value);
        }
        //不能转换成功 获取的值变为null
        StreamReader reader = ht["1806010712"] as StreamReader;
        if (reader == null)
        {
            Console.WriteLine("小强不是streamread型");
        }
        //先获取object型 再做判断
        Object value2 = ht["1806010712"];
        if(value2 is string)
        {
            Console.WriteLine("这个是字符串型");
        }    

5)遍历

        //遍历哈希表
        foreach(DictionaryEntry de in ht)
        {
            Console.WriteLine(de.Key);
            Console.WriteLine(de.Value);
        }
        //遍历键
        foreach(string key in ht.Keys)
        {
            Console.WriteLine(key);
        }
        //遍历值
        foreach(string value3 in ht.Values)
        {
            Console.WriteLine(value3);
        }

6)排序

        ArrayList akeys=new ArrayList(ht.Keys); 
        akeys.Sort(); //按字母顺序进行排序
        foreach(string key in akeys)
        {
           Console.WriteLine(key + ": " + ht[key]);  //排序后输出
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值