一、添加引用 using System.Collections;spa
二、建立並添加數據3d
1 Hashtable hs = new Hashtable(); 2 hs.Add("Name1", "lwj"); 3 hs.Add("Name2", "wyp"); 4 hs.Add("Name3", "zwl"); 5 hs.Add("Name4", "zyc"); 6 hs.Add("Name8", "wyw"); 7 hs.Add("Name5", "wyw");
三、遍歷哈希表中的 值Valuecode
1 Console.WriteLine("---------遍歷哈希表中的值----------"); 2 ////返回循環訪問 System.Collections.Hashtable 的 System.Collections.IDictionaryEnumerator。 3 IDictionaryEnumerator emu = hs.GetEnumerator(); //// 遍歷哈希表全部的鍵,讀出相應的值 4 while (emu.MoveNext()) //若是枚舉數成功地推動到下一個元素,則爲 true;若是枚舉數越過集合的結尾,則爲 false。 5 { 6 string str = emu.Value.ToString(); 7 Console.WriteLine(str); 8 }
|
四、遍歷哈希表blog
1 Console.WriteLine("-----------遍歷哈希表-------------"); 2 foreach (DictionaryEntry de in hs) 3 { 4 Console.WriteLine("key = {0}; Value = {1}", de.Key, de.Value); 5 }
五、對HashTable排序以後輸出,按Key排序排序
1 Console.WriteLine("-------哈希表按Key排序以後--------"); 2 ////哈希表排序, 按Key排序 3 ArrayList alist = new ArrayList(hs.Keys); 4 alist.Sort(); 5 foreach (string obj in alist) // //遍歷alist 6 { 7 Console.WriteLine("{0, -15} {1, -15}", obj, hs[obj]); //{0, -15} PadLeft 8 }
六、轉換成List輸出string
1 Console.WriteLine("------------使用List以後-----------"); 2 List<string> list = new List<string>(); 3 foreach (DictionaryEntry de in hs) 4 { 5 list.Add(de.Value.ToString()); 6 } 7 foreach (string obj in list) 8 { 9 Console.WriteLine(obj);//i就是下標 10 }
七、轉換成Dictionary<object, object>以後進行遍歷輸出it
1 Console.WriteLine("---------使用Dictionary以後--------"); 2 Dictionary<object, object> myDic = new Dictionary<object, object>(); 3 foreach (DictionaryEntry de in hs) //循環遍歷HashTable 將其添加至 myDic 4 { 5 myDic.Add(de.Key, de.Value); // 這倆都是 object型的 6 } 7 //循環遍歷輸出 myDic 8 foreach (object obj in myDic) 9 { 10 Console.WriteLine(obj.ToString()); //[Name,wyw] 輸出是這樣的格式 11 } 12 //採用另外一種輸出 13 Console.WriteLine("--------Dictionary鍵值對輸---------"); 14 foreach (KeyValuePair<object, object> kvp in myDic) 15 { 16 Console.WriteLine("Key={0}, Value={1}", kvp.Key, kvp.Value); //獲取鍵值對後,自定義輸出 17 }
八、克隆HashTable 到另外一HashTable並 遍歷輸出:io
//此處寫 添加 刪除一些數據,以便驗證
1 Console.WriteLine("------添加移除以後,遍歷哈希表-----"); 2 hs["Name0"] = "The First"; 3 hs.Remove("Name8"); 4 hs.Add("Name6", "add6"); 5 foreach (DictionaryEntry de in hs) 6 { 7 Console.WriteLine("Key: {0, 15} Value{1, 15}", de.Key, de.Value); 8 } 9 10 Console.WriteLine("--------克隆哈希表到hs2以後--------"); 11 Hashtable hs2 = (Hashtable)hs.Clone(); //public virtual object Clone(); 建立 System.Collections.Hashtable 的淺表副本。 12 foreach (DictionaryEntry de in hs2) 13 { 14 Console.WriteLine("Key: {0, 15} Value{1, 15}", de.Key, de.Value); 15 } 16 17 Console.WriteLine("----------哈希表清空以後-----------"); 18 hs.Clear(); 19 foreach (DictionaryEntry de in hs) //哈希表存在,但裏面沒數據,所以下列不執行 20 { 21 Console.WriteLine("Key: {0, 15} Value{1, 15}", de.Key, de.Value); 22 }
輸出結果:table
所有源代碼:class
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace HashTable { class Program { static void Main(string[] args) { Hashtable hs = new Hashtable(); hs.Add("Name1", "lwj"); hs.Add("Name2", "wyp"); hs.Add("Name3", "zwl"); hs.Add("Name4", "zyc"); hs.Add("Name8", "wyw"); hs.Add("Name5", "wyw"); Console.WriteLine("-----------遍歷哈希表-------------"); foreach (DictionaryEntry de in hs) { Console.WriteLine("key = {0}; Value = {1}", de.Key, de.Value); } Console.WriteLine("---------遍歷哈希表中的值----------"); ////返回循環訪問 System.Collections.Hashtable 的 System.Collections.IDictionaryEnumerator。 IDictionaryEnumerator emu = hs.GetEnumerator(); //// 遍歷哈希表全部的鍵,讀出相應的值 while (emu.MoveNext()) //若是枚舉數成功地推動到下一個元素,則爲 true;若是枚舉數越過集合的結尾,則爲 false。 { string str = emu.Value.ToString(); Console.WriteLine(str); } Console.WriteLine("-------哈希表按Key排序以後--------"); ////哈希表排序, 按Key排序 ArrayList alist = new ArrayList(hs.Keys); alist.Sort(); foreach (string obj in alist) // //遍歷alist { Console.WriteLine("{0, -15} {1, -15}", obj, hs[obj]); //{0, -15} PadLeft } Console.WriteLine("------------使用List以後-----------"); List<string> list = new List<string>(); foreach (DictionaryEntry de in hs) { list.Add(de.Value.ToString()); } foreach (string obj in list) { Console.WriteLine(obj);//i就是下標 } Console.WriteLine("---------使用Dictionary以後--------"); Dictionary<object, object> myDic = new Dictionary<object, object>(); foreach (DictionaryEntry de in hs) //循環遍歷HashTable 將其添加至 myDic { myDic.Add(de.Key, de.Value); // 這倆都是 object型的 } //循環遍歷輸出 myDic foreach (object obj in myDic) { Console.WriteLine(obj.ToString()); //[Name,wyw] 輸出是這樣的格式 } //採用另外一種輸出 Console.WriteLine("--------Dictionary鍵值對輸---------"); foreach (KeyValuePair<object, object> kvp in myDic) { Console.WriteLine("Key={0}, Value={1}", kvp.Key, kvp.Value); //獲取鍵值對後,自定義輸出 } Console.WriteLine("------添加移除以後,遍歷哈希表-----"); hs["Name0"] = "The First"; hs.Remove("Name8"); hs.Add("Name6", "add6"); foreach (DictionaryEntry de in hs) { Console.WriteLine("Key: {0, 15} Value{1, 15}", de.Key, de.Value); } Console.WriteLine("--------克隆哈希表到hs2以後--------"); Hashtable hs2 = (Hashtable)hs.Clone(); //public virtual object Clone(); 建立 System.Collections.Hashtable 的淺表副本。 foreach (DictionaryEntry de in hs2) { Console.WriteLine("Key: {0, 15} Value{1, 15}", de.Key, de.Value); } Console.WriteLine("----------哈希表清空以後-----------"); hs.Clear(); foreach (DictionaryEntry de in hs) //哈希表存在,但裏面沒數據,所以下列不執行 { Console.WriteLine("Key: {0, 15} Value{1, 15}", de.Key, de.Value); } Console.ReadKey(); } } }
筆者在接觸到了HashTable以後,上網搜索了一下具體用法,而後筆者就試着去聯繫之前 接觸過的List、Diationary等,
試着將他們相互轉換。以上僅供參考,方案並不是最佳,但願能幫助你們!謝謝閱讀與指正。