C# 学习笔记——HashTable

C#中HashTable的简单介绍

关于哈希表:

      哈希表(Hash table),是根据关键码值(Key value)而直接进行访问的数据结构。它是表示集合和字典的另一种有效方法,提供了一种完全不同的存储和搜索方式,通过将关键码映射到表中某个位置来存储元素,然后根据关键码用同样的方式直接访问。当数据量很大且经常需要进行查询的时候,使用哈希表能减少查询时间。

HashTable的定义和方法

命名空间: System.Collections
常用属性:

属性名称 说明
Count 获取在HashTable中键值对的数目
Keys 获取包含在Hashtable中键的集合
Values 获取包含Hashtable中值的集合

常用方法:

方法名称 说明
hashtable.Add(key,value) 在哈希表中添加一个keyvalue键值对
hashtable.Remove(key) 在哈希表中去除某个keyvalue键值对
hashtable.Clear() 清空哈希表
hashtable.Contains(key) 判断哈希表是否包含特定键key
            Hashtable hashtable = new Hashtable();//创建一个哈希表
            //向表中增加元素
            hashtable.Add("first", "金星");
            hashtable.Add("second", "水星");
            hashtable.Add("third", "地球");
            hashtable.Add("fourth", "火星");

            //属性检测
            Console.WriteLine("表中键值对的个数:" + hashtable.Count);
            Console.WriteLine("表中的键有:");
            foreach(Object obj in hashtable.Keys)//遍历键
            {
                Console.Write(obj.ToString() + ' ');
            }
            Console.WriteLine();

            foreach (Object obj in hashtable.Values)//遍历值
            {
                Console.Write(obj.ToString() + ' ');
            }
            Console.WriteLine();

            //删除元素
            hashtable.Remove("third");

            //判断是否在表中
            hashtable.Contains("fourth");

遍历哈希表:
1、DictionaryEntry Object方法:

            //用DictionaryEntry遍历
            foreach(DictionaryEntry de in hashtable)
            {
                Console.Write(de.Key);
                Console.WriteLine(":" + de.Value);
            }

2、用Hashtable.GetEnumerator()方法实现遍历:

            //用GetEnumerator()方法遍历
            IDictionaryEnumerator denumer = hashtable.GetEnumerator();
            DictionaryEntry dentry;
            while(denumer.MoveNext()) 
            {
                dentry = (DictionaryEntry)denumer.Current;
                Console.WriteLine("{0}:{1}", dentry.Key, dentry.Value);
            }

哈希表的排序:
      对哈希表排序实际上是对哈希表中键值对的key值按一定的顺序重新排列,但是,C#并没有直接提供对HashTable进行排序的方法,如果我们需要对哈希表以一定的顺序输出,只能采取一种变通的方法,将key值单独取出来进行排序后,再根据key值对表进行访问:

            //排序
            ArrayList list = new ArrayList(hashtable.Keys);
            list.Sort();
            foreach(string skey in list)
            {
                Console.WriteLine("{0}:{1}", skey, hashtable[skey]);
            }

猜你喜欢

转载自blog.csdn.net/ShenDW818/article/details/79742926