程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#基礎知識系列十(集合)

C#基礎知識系列十(集合)

編輯:C#入門知識

  本節主要是來了解學習集合,以方便在程序編寫時,什麼地方該選用什麼集合,讓程序更健壯的運行起來。在學習了解集合之前,首先需要了解一些數據結構方面的知識。下面我們就先簡單的來看一下數據結構。

   數據結構就是相互之間存在一種或多種特定關系的數據元素的集合。 程序界有一點很經典的話,程序設計=數據結構+算法。用源代碼來體現,數據結構,就是編程。

  

 

 在上圖中可以看到,集合總體上分為線性集合和非線性集合。線性集合按照存儲方式又分為直接存儲和順序存儲。

  直接存儲,是指該類型的集合數據元素可以直接通過下標(即index)來訪問,在C#中直接存儲的數據結構有三類:Array(包含數組和List<T>)、string、struct。

  直接存儲結構的優點是:向數據結構中添加元素是很高效的,直接放在數據末尾的第一個空位上就可以了。

  直接存儲結構的缺點是:向集合插入元素將會變得低效,它需要給插入的元素騰出位置並順序移動後面的元素。

  順序存儲結構,即線性表。線性表可動態的擴大和縮小,它在一片連續的區域中存儲數據元素。線性表不能按照索引進行查找,它是通過對地址的引用來搜索元素的,為了找到某個元素,它必須遍歷所有元素,直到找到對應的元素為止。所以,線性表的優點是插入和刪除數據效率高,缺點是查找的效率相對來說低一點。

  線性表有可以分為隊列、棧以及索引群集,在C#中分別表現為:Queue<T>、Stack<T>,索引群集又進一步泛化為字典類型Dictionary<TKey,TValue>和雙向鏈表LinkedList<T>。

非線性集合自己在實際應用中比較少,而且感覺也比較復雜,所以在此先不做討論學習。下面我們就來一一的學習一下日常使用比較頻繁的集合吧。

 數組就是包含同一類型的多個元素。

 數組的聲明:int[] intArray;

注意:數組聲明時,方括號([])必須跟在類型的後面,而不是變量名的後面。在C#中,將方括號放在變量名後是不合法的語法。

 數組的初始化:

   我們知道數組是引用類型,所以需要給他們分配堆上的內存。

1、intArray=new int[3];

2、intArray=new int[]{1,2,3};

3、int[] intArray={1,2,3}; 

數組在聲明和初始化後,可以使用索引器進行訪問,索引器總是以0開頭,表示第一個元素。

多維數組:

  一般可以是一維數組,二維數組、三維數組、多維數組。下面簡單的來看一下數組吧

            
            [] intArray = { , , 
            [,] intTwoArray= [,, ] = , ] = , ] = , ] = , ] = , ] = 
            [,] intTwoArray2 =  , , , , , , , , 
            =  ,}, {,}, {,,}, {,}, {,,}, {,}, {,,}, {,}, {,

上面簡單的介紹說明了一下一維數組、二維數組和三維數組。

 ArrayList類繼承了以下幾個接口

      ArrayList : IList, ICollection, IEnumerable, ICloneable

以下來看一下ArrayList的基本操作

            
            [] intArray = { , , 
            ArrayList array = 
            array.Add(
            array.Insert(, 
            array.Remove(
            array.RemoveAt(
            array.RemoveRange(, 
             ( i 
            array.IndexOf(
            array.Contains(

  List<T>類是  ArrayList 類的泛型等效類。 該類使用大小可按需動態增加的數組實現  IList<T> 泛型接口。 

看看List<T>所繼承的接口

   
    
(Mscorlib_CollectionDebugView<>  List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable

T就是列表中元素的類型,下面我們以string為例進行說明一下List<T>的基本用法。在測試過程中發現List<T>與ArrayList的操作基本完全類似。主要也是它們共同繼承了IList,ICollection,IEnumerable三個接口。

T當然也可以是自定義的類型,這也是我們在日常的編程中應用最為廣泛的。首先來定義一個實體

       FirstName { ;   LastName { ; 

接下來進行定義和初始化操作

            List<Person> list =  List<Person> Person() { FirstName=,LastName= Person() { FirstName = , LastName =  });

因為操作和上面的ArrayList基本是完全一樣的,所以在此就不做過多的介紹了。

 1、Dictionary的普通用法

Dictionary<string, string>是一個泛型。它本身有集合的功能有時候可以把它看成數組。它的結構是這樣的:Dictionary<[key], [value]>,它的特點是存入對象是需要與[key]值一一對應的存入該泛型,通過某一個一定的[key]去找到對應的值。

          Main(
            Dictionary<, > dictionaryList =  Dictionary<, >
            dictionaryList.Add(, , , 
             (dictionaryList.ContainsKey(,
             str=dictionaryList[
             ( key 
             ( value 
             ( dic 
            dictionaryList.Remove(

2、將dictionary<key,value> 的value當成一個數組

            Dictionary<,[]> stringList= Dictionary<,[]>, []{,,,, []{,, + stringList[][]);

3、將Dictionary<key,value> 的value當成一個實體類

       FirstName { ;   LastName { ;   Main(<,Person> personList= Dictionary<,Person>=  ( i = ; i < ; i++= = =  ( student 

4、文章篇幅有限,關於dictionary有關擴展方法暫時不在此進行介紹,如有興趣可以參見大神作品http://www.cnblogs.com/ldp615/archive/2011/01/28/dictionary-extensions.html

   其實可以發現它們大體的基本操作是類似的,也就是他們擁有繼承共同的接口。這裡也只是簡單的介紹了我覺得最常見的幾個集合的使用。

 

英語小貼士

Don't be silly。——別胡鬧了

I am not available。——我正忙著

There is nothing I can do。——我什麼都不能做

Everything will be okey in the end。if it's not okey,it’s not the end。——任何事情到了最後都是好的,如果不好,說明還沒到最後

作者:aehyok

出處:http://www.cnblogs.com/aehyok/

感謝您的閱讀,如果您對我的博客所講述的內容有興趣,那不妨點個推薦吧,謝謝支持:-O。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved