C#中哈希表(Hashtable)簡單用法


1.哈希表簡述

哈希表是種數據結構,它可以提供快速的插入操作和查找操作。第一次接觸哈希表時,它的優點多得讓人難以置信。不論哈希表中有多少數據,插入和刪除(有時包括側除)只需要接近常量的時間即0(1)的時間級。哈希表也有一些缺點它是基於數組的,數組創建后難於擴展某些哈希表被基本填滿時,性能下降得非常嚴重,所以程序雖必須要清楚表中將要存儲多少數據(或者准備好定期地把數據轉移到更大的哈希表中,這是個費時的過程。

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

2.哈希表用法

1)命名空間

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

2)基本操作

//添加一個keyvalue鍵值對:
HashtableObject.Add(key,value);

//移除某個keyvalue鍵值對:
HashtableObject.Remove(key);

//移除所有元素:           
HashtableObject.Clear(); 

// 判斷是否包含特定鍵key:
HashtableObject.Contains(key);

3)例子

            Hashtable ht = new Hashtable();
            ht.Add("1706010315", "小張");
            ht.Add("1706010316", "小王");
            ht.Add("1706010317", "小李");
            ht.Add("1706010318", "小紅");

            string mate = (string)ht["1706010315"]; //根據鍵值取元素
            bool exist = ht.Contains("1706010316"); //哈希表中是否含有特定鍵
            ht.Remove("1706010315"); //移除一個
            ht.Clear(); //移除全部            

4)類型轉換

            ht.Add("1806010712", "小強");
            //能轉換成功
            string value = ht["1806010712"] as string;
            if (value != null)
            {
                Console.WriteLine(value);
            }
            //不能轉換成功 獲取的值變為null
            StreamReader reader = ht["1806010712"] as StreamReader;
            if (reader == null)
            {
                Console.WriteLine("小強不是streamread型");
            }
            //先獲取object型 再做判斷
            Object value2 = ht["1806010712"];
            if(value2 is string)
            {
                Console.WriteLine("這個是字符串型");
            }    

5)遍歷

            //遍歷哈希表
            foreach(DictionaryEntry de in ht)
            {
                Console.WriteLine(de.Key);
                Console.WriteLine(de.Value);
            }
            //遍歷鍵
            foreach(string key in ht.Keys)
            {
                Console.WriteLine(key);
            }
            //遍歷值
            foreach(string value3 in ht.Values)
            {
                Console.WriteLine(value3);
            }
    

6)排序

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM