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プログラムには以上のすべての操作が含まれます。
三、ハッシュ表を巡回する
ハッシュ・テーブルを巡回するにはDictionary Entry Objectが必要です。コードは以下の通りです。
四、ハッシュ表を並べ替える
ハッシュ表を並べ替えるという定義は、key/valueキーのペアの中のkeyを一定のルールで並べ替えることですが、実際にはこの定義は実現できません。私たちは直接にHashtableでkeyを並べ直すことができません。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();
}