c#删除哈希表中所有值为1的键值对 代码

如题所述

基本思路是先获取哈希表中所有值为1的键名,然后用这些键名引用相应元素,并移除这些元素。

//生成Hash表。
Hashtable hashtable = new Hashtable();
hashtable.Add("name", "Tome");
hashtable.Add("age", 18);
hashtable.Add("sex", "男");
hashtable.Add("补考次数", 1);
hashtable.Add("重修次数", 1);

//找到所有值为1的键名。
string[] keys = hashtable.Keys.Cast<string>().Where(x => hashtable[x].Equals(1)).ToArray();

//移除相应键名对应的元素。
foreach (string key in keys)
hashtable.Remove(key);

//显示Hash表当前所有元素。
foreach (DictionaryEntry entry in hashtable)
Console.WriteLine(entry.Key + "\t" + entry.Value);
Console.ReadKey();

运行结果:

小知识:


HashTable类(哈希表):每个元素都是一个存储在 DictionaryEntry
对象中的键/值对。键不能为 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing),但值可以。


在哈希表中,根据指定键名获取或设置相应值的运算复杂度为 O(1),判断指定键名是否存在的运算复杂度也是 O(1)。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-09
            ArrayList list = new ArrayList();
            foreach (DictionaryEntry n in h)//遍历哈希表h,n获得了哈希表h的键值对。
            {
                if (n.Value.Equals(1))//寻找值为1的键值对
                {
                    list.Add(n.Key);//把值为1的键值对对应的 键 添加到集合list里。
                }
            }
            foreach (var item in list)//list里装的都是键。
            {
                h.Remove(item);
            }

本回答被提问者和网友采纳