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中所有的键值对

           


C#,将Hashtable转换为字符串数组可以使用以下代码示例: ```csharp Hashtable hash = new Hashtable(); // 添加键值对 hash.Add("key1", "value1"); hash.Add("key2", "value2"); hash.Add("key3", "value3"); // 创建一个字符串数组 string\[\] array = new string\[hash.Count\]; // 使用CopyTo方法将Hashtable的值复制到字符串数组 hash.Values.CopyTo(array, 0); // 打印字符串数组 foreach (string value in array) { Console.WriteLine(value); } ``` 在上述代码,我们首先创建了一个Hashtable对象,并向其添加了键值对。然后,我们创建了一个与Hashtable大小相同的字符串数组。接下来,我们使用Hashtable的CopyTo方法将所有值复制到字符串数组。最后,我们使用foreach循环遍历字符串数组并打印每个值。 请注意,这里我们只复制了Hashtable的值,如果你需要复制键或键值对,可以使用Hashtable的Keys或DictionaryEntry属性。 #### 引用[.reference_title] - *1* [C# 静态与动态数组](https://blog.csdn.net/lyshark_csdn/article/details/124939204)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C# Hashtable存入数组、List](https://blog.csdn.net/weixin_30532759/article/details/96505533)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值