C〓中hashTableの使用


一、ハッシュ表(Hashtable)の略述
  NET Fraamewarkでは、HashtableはSystem.Coollectionsの名前空間に提供されるコンテナであり、key/valueのようなキー値ペアを処理して表現するために使用されます。その中でkeyは通常、素早く検索するために使用されます。valueは、keyに対応する値を記憶するために使用される。hashtableではkey/valueキーペアはすべてobjectタイプですので、hashtableはどのタイプのkey/valueキーペアにも対応できます。
二、ハッシュ表の簡単な操作
 ハッシュ表にkey/valueキーペアを追加します。Hashtable Object.Add(key,value) ハッシュテーブルでは、あるキー/valueキーペアを削除します。Hashtable Object.Remove(key); すべての要素をハッシュテーブルから削除します。           Hashtable Object.Clear() ハッシュテーブルが特定のキーキーキーを含むかどうかを判断する:      Hashtable Object.Contins(key); 以下のWindowsプログラムには以上のすべての操作が含まれます。
 
private void button1_Click(object sender, System.EventArgs e)
{
	 Hashtable ht=new Hashtable(); //    Hashtable  

	 ht.Add("E","e");//  key/value   
	 ht.Add("A","a");
	 ht.Add("C","c");
	 ht.Add("B","b");

	 MessageBox.Show(" A   : " + (string)ht["A"]);
	 MessageBox.Show("     E:" + ht.Contains("E").ToString()); //            ,     true false
	 
	 ht.Remove("C");//    key/value   
	 MessageBox.Show("    C :" + ht["C"]);

	 ht.Clear();//      
	 MessageBox.Show("        " + ht["A"]); //          
}
 
三、ハッシュ表を巡回する
 ハッシュ・テーブルを巡回するにはDictionary Entry Objectが必要です。コードは以下の通りです。
foreach(DictionaryEntry de in ht) //ht   Hashtable  
{
	MessageBox.Show(de.Key.ToString());//de.Key   key/value   key
	MessageBox.Show(de.Value.ToString());//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)
{
	MessageBox.Show(skey + ":");
	MessageBox.Show(ht[skey].ToString());//     
}
 
public void InitData()
{
	string sql = @"select  * from orders";

	SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=sa;database=NorthWind");
	SqlDataAdapter sda = new SqlDataAdapter(sql, con);
	DataTable dt = new DataTable();
	sda.Fill(dt);

	Hashtable htt = new Hashtable(5);

	foreach (DataRow dr in dt.Rows)
	{
		htt.Add(dr["orderID"], dr["CustomerID"]);

	}
	ArrayList al = new ArrayList(htt.Keys);
	al.Sort();
	foreach (DictionaryEntry de in htt)
	{
	   if (de.Value.ToString == "ALFKI")
	   {
		   Response.Write(de.Key + "Next .");
	   }
	}
	GridView1.DataSource = dt;
	GridView1.DataBind();
}