HashTable、List、ArrayList的經典使用和相互轉換

一、添加引用 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等,

試着將他們相互轉換。以上僅供參考,方案並不是最佳,但願能幫助你們!謝謝閱讀與指正。

相關文章
相關標籤/搜索