C#中hashtable的賦值、取值、遍歷、排序操作


一,哈希表(Hashtable)簡述

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

 

二,哈希表的簡單操作

在哈希表中添加一個key/value鍵值對:

HashtableObject.Add(key,value);

 

在哈希表中去除某個key/value鍵值對:

HashtableObject.Remove(key);

 

從哈希表中移除所有元素:

HashtableObject.Clear();

 

判斷哈希表是否包含特定鍵key:

HashtableObject.Contains(key);

 

下面控制台程序包含以上所有操作示例:

using System;
using System.Collections; //使用Hashtable時,必須引入這個命名空間
class hashtable
{
 public static void Main()
 {
  Hashtable ht=new Hashtable(); //創建一個Hashtable實例
  ht.Add("E","e");//添加key/value鍵值對
  ht.Add("A","a");
  ht.Add("C","c");
  ht.Add("B","b");
  string s=(string)ht["A"];
  if(ht.Contains("E")) //判斷哈希表是否包含特定鍵,其返回值為true或false
  Console.WriteLine("the E key:exist");
  ht.Remove("C");//移除一個key/value鍵值對
  Console.WriteLine(ht["A"]);//此處輸出a
  ht.Clear();//移除所有元素
  Console.WriteLine(ht["A"]); //此處將不會有任何輸出
 }
}

 

三,遍歷哈希表

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

foreach(DictionaryEntry de in ht) //ht為一個Hashtable實例
{
 Console.WriteLine(de.Key);//de.Key對應於key/value鍵值對key
 Console.WriteLine(de.Value);//de.Key對應於key/value鍵值對value
}

 

四,對哈希表進行排序

對哈希表進行排序在這里的定義是對key/value鍵值對中的key按一定規則重新排列,但是實際上這個定義是不能實現的,因為我們無法直接在Hashtable進行對key進行重新排列,如果需要Hashtable提供某種規則的輸出,可以采用一種變通的做法:

ArrayList akeys=new ArrayList(ht.Keys); //別忘了導入System.Collections
akeys.Sort(); //按字母順序進行排序
foreach(string skey in akeys)
{
 Console.Write(skey + ":");
 Console.WriteLine(ht[skey]);//排序后輸出
}

 

hashtable不能排序,但是可以使用TreeMap來代替Hashtable。

TreeMap ts=new TreeMap();
ts.put(new Integer("1"),"aaa1");
ts.put(new Integer("3"),"aaa3");
ts.put(new Integer("2"),"aaa2");
ts.put(new Integer("5000"),"aaa500");
ts.put(new Integer("2000"),"aaa2000");
Set st=ts.keySet();
for(Iterator i=st.iterator();i.hasNext();)
{
    System.out.println(ts.get(i.next()));
}
 

 


免責聲明!

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



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