c#中的Hashtable

Hashtable集合类由包含集合元素的存储桶组成。 存储桶是 Hashtable 中元素的虚拟子组,与在大多数集合中进行搜索和检索相比,其搜索和检索更加容易和快速当将对象添加到 Hashtable时,先用hash函数根据自身的key值生成一个特定的哈希码,并把它存储在与该哈希码相关联的存储桶中。当在 Hashtable 中对一个值进行搜索时,先为该值生成哈希码,并搜索与该哈希代码相关联的存储桶。


 哈希函数是一种算法,它基于键值来生成并返回一个哈希码。你还可以重写此哈希函数,如果你喜欢的话。方法是实现 IHashCodeProvider接口中的 Hashtable 构造函数。在 Hashtable 中的每个对象能够通过使用 GetHashCode 方法得到自身的哈希码。另外,哈希函数有可能为两个不同的键生成相同的哈希代码。

例如,用于字符串的哈希函数可能采用字符串中每个字符的 ASCII 代码,并将它们加总以生成哈希代码。 字符串“picnic”的哈希代码可能与字符串“basket”的哈希代码不同;因此,字符串“picnic”和“basket”可能在不同的存储桶中。 与此相反,“stressed”和“desserts”可能具有相同的哈希代码,并且位于同一个存储桶中。

 Hashtable t = new Hashtable();
            t.Add("a","90");
            t.Add("b", "70");
            t.Add("c", "60");


            Console.WriteLine("打印键");
            foreach(string s in t.Keys)
            {
                Console.WriteLine(s);
            }


            Console.WriteLine("打印值");
            foreach (string s in t.Values)
            {
                Console.WriteLine(s);
            }

            Console.WriteLine("打印键值对");
            foreach (DictionaryEntry de in t)
            {
                Console.WriteLine("{0},{1}", de.Key, de.Value);

                Console.WriteLine("哈希码{0};",de.GetHashCode());
                // Console.WriteLine(de.Key, de.Value);这是错误的写法
            }
            
            
            //foreach 语句是对枚举数的包装,它只允许从集合中读取,不允许写入集合。
            Console.WriteLine("获取键值对的对数");
            Console.WriteLine(t.Count);
            Console.WriteLine("删除指定key的键值对");
            t.Remove("a");
            foreach (DictionaryEntry de in t)
            {
                Console.WriteLine("{0},{1}", de.Key, de.Value);

              
                // Console.WriteLine(de.Key, de.Value);这是错误的写法
            }
            t.Clear();//删除t中所有的键值对

           


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值