91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中哈希表的用法

發布時間:2021-08-25 17:12:16 來源:億速云 閱讀:119 作者:chen 欄目:大數據

這篇文章主要介紹“C#中哈希表的用法”,在日常操作中,相信很多人在C#中哈希表的用法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C#中哈希表的用法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

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或false
     ht.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鍵值對key
   Console.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);  //輸出: 744

sw.Restart();
for (int i = 0; i < countNum; i++)
{
    dictionary.Add(i.ToString(), i);
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);  //輸出: 489

sw.Restart();
for (int i = 0; i < countNum; i++)
{
    hashtable.ContainsKey(i.ToString());
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);  //輸出: 245

sw.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。

到此,關于“C#中哈希表的用法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

伊川县| 时尚| 东乡县| 长子县| 缙云县| 乳山市| 双辽市| 广宗县| 永宁县| 荥阳市| 宁蒗| 咸宁市| 汉沽区| 德格县| 教育| 阜南县| 屯昌县| 淮北市| 开江县| 宜君县| 北宁市| 同江市| 绥宁县| 通城县| 会昌县| 三门县| 苏尼特左旗| 佛冈县| 南召县| 龙江县| 平谷区| 乌兰浩特市| 明星| 珠海市| 北票市| 贺兰县| 工布江达县| 涪陵区| 无极县| 团风县| 岳池县|