日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#中哈希表(HashTable)的用法详解

發布時間:2025/3/17 C# 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#中哈希表(HashTable)的用法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. ?哈希表(HashTable)簡述

? 在.NET Framework中,Hashtable是System.Collections命名空間提供的一個容器,用于處理和表現類似keyvalue的鍵值對,其中key通常可用來快速查找,同時key是區分大小寫;value用于存儲對應于key的值。Hashtable中keyvalue鍵值對均為object類型,所以Hashtable可以支持任何類型的keyvalue鍵值對.

2. 什么情況下使用哈希表

(1)某些數據會被高頻率查詢
(2)數據量大
(3)查詢字段包含字符串類型
(4)數據類型不唯一

?3.?哈希表的使用方法

哈希表需要使用的namespace

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

?

哈希表的基本操作:

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

?

控制臺程序例子:

using System; using System.Collections; //file使用Hashtable時,必須引入這個命名空間 class Program {public static void Main(){Hashtable ht = new Hashtable(); //創建一個Hashtable實例ht.Add("北京", "帝都"); //添加keyvalue鍵值對ht.Add("上海", "魔都");ht.Add("廣州", "省會");ht.Add("深圳", "特區");string capital = (string)ht["北京"];Console.WriteLine(ht.Contains("上海")); //判斷哈希表是否包含特定鍵,其返回值為true或falseht.Remove("深圳"); //移除一個keyvalue鍵值對ht.Clear(); //移除所有元素} }

?

?哈希表中使用多種數據類型的例子:

using System; using System.Collections;class Program {static Hashtable GetHashtable(){Hashtable hashtable = new Hashtable();hashtable.Add("名字", "小麗");hashtable.Add("年齡", 22);return hashtable;}static void Main(){Hashtable hashtable = GetHashtable();string name = (string)hashtable["名字"];Console.WriteLine(name);int age = (int)hashtable["年齡"];Console.WriteLine(age);} }

?

?當獲取哈希表中數據時,如果類型聲明的不對,會出現InvalidCastException錯誤。使用as-statements可以避免該錯誤。

using System; using System.Collections; using System.IO;class Program {static void Main(){Hashtable hashtable = new Hashtable();hashtable.Add(100, "西安");// 能轉換成功string value = hashtable[100] as string;if (value != null){Console.WriteLine(value);}// 轉換失敗,獲取的值為null,但不會拋出錯誤。StreamReader reader = hashtable[100] as StreamReader;if (reader == null){Console.WriteLine("西安不是StreamReader型");}// 也可以直接獲取object值,再做判斷object value2 = hashtable[100];if (value2 is string){Console.Write("這個是字符串型: ");Console.WriteLine(value2);}} }

?

4. 遍歷哈希表

?遍歷哈希表需要用到DictionaryEntry Object,代碼如下:

for(DictionaryEntry de in ht) //ht為一個Hashtable實例 {Console.WriteLine(de.Key); //de.Key對應于keyvalue鍵值對keyConsole.WriteLine(de.Value); //de.Key對應于keyvalue鍵值對value }

?

遍歷鍵

foreach (int key in hashtable.Keys) {Console.WriteLine(key); }

?

遍歷值

foreach (string value in hashtable.Values) {Console.WriteLine(value); }

?

5. 對哈希表進行排序

? 對哈希表按key值重新排列的做法:

ArrayList akeys=new ArrayList(ht.Keys); akeys.Sort(); //按字母順序進行排序 foreach(string key in akeys) {Console.WriteLine(key + ": " + ht[key]); //排序后輸出 }

?

6. 哈希表的效率

System.Collections下的哈希表(Hashtable)和System.Collections.Generic下的字典(Dictionary)都可用作lookup table,下面比較一下二者的執行效率。

Stopwatch sw = new Stopwatch(); Hashtable hashtable = new Hashtable(); Dictionary<string, int> dictionary = new Dictionary<string, int>(); int countNum = 1000000;sw.Start(); for (int i = 0; i < countNum; i++) {hashtable.Add(i.ToString(), i); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); //輸出: 744sw.Restart(); for (int i = 0; i < countNum; i++) {dictionary.Add(i.ToString(), i); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); //輸出: 489sw.Restart(); for (int i = 0; i < countNum; i++) {hashtable.ContainsKey(i.ToString()); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); //輸出: 245sw.Restart(); for (int i = 0; i < countNum; i++) {dictionary.ContainsKey(i.ToString()); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); //輸出: 192

由此可見,添加數據時Hashtable快。頻繁調用數據時Dictionary快。

結論:Dictionary<K,V>是泛型的,當K或V是值類型時,其速度遠遠超過Hashtable。

轉載于:https://www.cnblogs.com/chenmfly/p/4883106.html

總結

以上是生活随笔為你收集整理的C#中哈希表(HashTable)的用法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲人成人网 | 久久精品一区二区三区黑人印度 | 夜夜精品视频 | 国产91香蕉 | 亚洲小说专区 | 亚洲成人精 | 97影音| 五月天婷婷久久 | 久久久天堂国产精品女人 | 亚洲 欧美 日韩 国产综合 在线 | 香蕉av一区二区 | 国产一区二区三区四区视频 | 久久久精品免费观看 | 亚洲精品久久久久久久久久久 | 亚洲色图p | 啊v视频在线观看 | 午夜影院免费看 | 嫩草影院av| 久久久国产精品无码 | 波多野结衣一区二区三区免费视频 | 中国毛片在线观看 | 美女一区二区三区 | 成人在线免费电影 | 欧美成人性生活视频 | 亚洲欧美黄 | 91动态图 | 九色影视| 色站在线 | 亚洲视频免费看 | 优优色影院 | 成人爱爱网站 | 91成人午夜| 九九热精彩视频 | 黄色网页在线免费观看 | 激情小说欧美色图 | 亚洲精品乱码久久久久久蜜桃不卡 | 69福利区 | 色哟哟视频 | 秋霞啪啪片 | 国产人人干 | 欧美日韩a级片 | 视频免费在线 | 国产一区二区四区 | 偷拍亚洲色图 | 久久免费视频99 | 国产成人精品一区二区三区视频 | 成人在线观看网站 | 欧美日韩人妻精品一区二区 | 日韩av大片| 国产偷自拍视频 | 四虎黄色网址 | 日韩美女在线 | 日本老妇性生活 | 精品成人中文无码专区 | 午夜影院操 | 中文字幕成人在线 | 亚洲综合伊人 | 天天插天天干 | 熟妇人妻中文字幕无码老熟妇 | 神马午夜久久 | 99热这里只有精品2 91免费版黄 | 色婷婷av一区二区三区之红樱桃 | 成人精品一区二区三区视频 | 巨胸大乳www视频免费观看 | 视频一区 国产 | 欧美精选一区二区 | 视频网站在线观看18 | 黄色岛国片 | 久久中文字幕电影 | 日韩在线观看视频一区二区 | 91国产免费视频 | 久久久久久久久久影视 | 亚洲少妇第一页 | 久久久久久久久久国产精品 | 怒海潜沙秦岭神树 | 性欢交69国产精品 | 看了让人下面流水的视频 | 国产精品久久久久永久免费看 | 男女免费观看视频 | 亚洲av片在线观看 | 污视频软件在线观看 | 免费的黄网站 | 国产在线黄 | 青青草在线免费观看 | 日韩欧美v | 男人桶女人桶爽30分钟 | 亚洲天堂一区二区在线观看 | 超碰在线98 | 日韩欧美偷拍 | 欧美夜夜操 | 亚欧激情 | 久久午夜鲁丝片 | 绿帽h啪肉np辣文 | 精品人妻少妇一区二区 | 99热2| 激情综合网站 | 大奶一区二区 | 成人免费毛片日本片视频 | 国产初高中真实精品视频 |