1. 程式人生 > >集合、泛型集合、字典、雜湊表 總結

集合、泛型集合、字典、雜湊表 總結


一:ArrayList集合

1.  必須宣告名稱空間 usingsystem.collection

2.  可用與儲存不同型別的資料

3.  讀取資料時大都需要里氏轉換

4.  常用方法

Add:新增資料

Insert:插入資料

Remove:刪除索引對應的資料

Removerage:(index,length)從某個索引開始,移除長度為length的資料

Clear:清除集合,此時集合中不再有元素

Sort:排序

Reverse:反轉

Count:集合的長度

【注意】

add():新增資料,如何新增的是個陣列,則陣列會作為一個元素新增到集合中

AddRange():如果新增的是個陣列,則集合會新增與陣列相同個數的元素

6.可以初始化容量,但實際新增數值時,可以超出這個範圍

7.程式碼演示:

    class Program
    {
        static void Main(string[] args)
        {
            Person p=new Person("小王");
            int[]num=new int[]{1,2,3,4,5};
            ArrayList myAL=new ArrayList();
            myAL.Add(1); //新增int型別
            myAL.Add(2);
            myAL.Add("世界");//新增string型別
            myAL.Add(p);     //新增類
            myAL.AddRange(num);//新增陣列
            myAL.Insert(3, "漂亮");//在索引3的前面加資料
            myAL.Remove(1);//從集合中移除指定物件1在集合中的第一個匹配項
            myAL.RemoveRange(1, 3);//從索引為1的位置開始,刪除3個數據
            foreach(object value in myAL)
            {
                Console.WriteLine(value);
            }
            
            //myAL.Clear();          
            Console.WriteLine("集合中元素的個數為{0}",myAL.Count);
            Console.Read();
        }
    }
    public class  Person
    {
        private string name;
        public Person(string name)
        {
            this.name=name;
        }
    }

二:List泛型集合

1.不需要匯入名稱空間

2.儲存相同指定型別的資料

3.常用方法

     方法和ArrayList集合的方法大致相同,但下面是List獨有的方法:

    如果資料型別是int型別,可直接呼叫List本身具有的方法求最大值馬max()、最小值min(),和sum()、平均值

4.程式碼演示:

            int[]num=new int[]{1,2,3,4,5};
            List<int> mylist = new List<int>();

            foreach(int n in num)
            {
                mylist.Add(n);
            }
            
            Console.WriteLine("最大值為{0}",mylist.Max());
            Console.WriteLine("最小值為{0}",mylist.Min());
            Console.WriteLine("和為{0}",mylist.Sum());
            Console.WriteLine("平均值為{0}",mylist.Average());

            Console.Read();

三:雜湊表

1.使用前必須匯入名稱空間 using system.collections

2.鍵和值的資料型別不受限制

3.以鍵值對的形式儲存,讀時也是以鍵值對的形式讀,key不能相同,key儲存時也是無序的,

4.常用方法

Add(key,value):以鍵值對的形式新增

Remove(key):移除對應鍵的value

contains():判斷是否存在該鍵

    class Program
    {
        static void Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            //新增的資料型別無限制
            ht.Add(1,"世界");
            ht.Add(2, "地球");
            ht.Add("one",1);
            ht.Add("two",2);
            ht.Add(new Person("小劉"),"帥氣");
            ht.Remove("one");//移除對應鍵的值

            bool result=ht.Contains("one");//判斷雜湊表中是否有指定的鍵
            Console.WriteLine(result);

            //顯示的順序不一定是你寫入的順序
            foreach (object myht in ht.Values)
            {
                Console.WriteLine(myht);
            }

            Console.Read();
        }
    }
    class Person
    {
        private string name;
        public Person(string name)
        {
            this.name = name;
        }
    }
5.雜湊表常用來幹什麼那,文字轉換,下面是簡繁體字轉換
 
    class Program
    {
        //簡體字
        private const String Jian = "啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安";
        //繁體字
        private const String HXW = "啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨咹";

        static void Main(string[] args)
        {
            //文章     
            //string text = "傳智播客有個帥哥叫小楊,小楊很帥,很純潔,是個著名的大帥哥。帥到什麼程度呢,他每次講課,總是引起一堆懷春少女或者半老徐娘的圍觀,搞得網路不暢通。後來他都不敢講公開課了。後來就偷偷的在程式碼教育的論壇註冊個號碼講公開課,可是一旦被發現,也是引來尖叫一片。那些女性朋友們覺得只是尖叫難以吸引小楊的注意,就想了一個辦法——一天二十四小時的加小楊的QQ";
           
            string text = "世界這麼大,幸好還有你,愛看看";
            Hashtable ht = new Hashtable();
            //將簡體字新增到雜湊表中
            for (int i = 0; i < text.Length;i++ )
            {
                ht.Add(Jian[i],HXW[i]);
            }
            //將簡體字轉換成繁體字
            for(int i=0;i<text.Length;i++)
            {
                if (ht.ContainsKey(text[i]))
                {
                    Console.Write(ht[text[i]]);
                }
                else
                {
                    Console.Write(text[i]);
                }
            }

            Console.Read();
        } 
    }

四:Dictory字典

1.不用匯入名稱空間

2.鍵的儲存順序是無序的

3.鍵和值的資料型別固定,需要自己指定

4.常用方法:

    方法和HashTable一樣,

5.程式碼演示

            //鍵的型別為int,值的型別為string
            Dictionary<int, string> d = new Dictionary<int, string>();
            d.Add(1,"世界");
            d.Add(2,"真大");
            foreach (object myd in d.Values)
            {
                Console.Write(myd);
            }
            Console.Read();
【總結】

1.ArrayList和HashTable使用前都需要匯入名稱空間,List和Dictionary不需匯入名稱空間

2.都可用foreach迴圈,但用foreach迴圈,一旦開始迴圈,就無法停止了

3.方法都差不多,但List特有max,min,sum,average方法,不用自己在寫程式碼去求了