C# 基礎概念系列(一)-- 簡述string[]、ArrayList和List的區別


.NET C#基礎概念系列(一)-- 簡述string[]、ArrayList和List的區別

 簡述string[]、ArrayList和List的區別

數組的定義:

  數組是特殊的定長線性表,即線性表中的元素又是一個線性表,n維數組是一種“同構”的數據結構,其中每個數據元素類型相同,結構一致。

數組結構的特點:

  (1)數組分配在一塊連續的數據空間上,因此在分配空間時必須確定長度。

  (2)數據元素類型相同。

  (3)數據元素的下標具有上下邊界約束且下標有序。

數組的優缺點:

優點:

  (1)數組在內存中是連續存儲的,所以它的索引速度非常快,而且賦值與修改元素也很簡單,效率高,為o(1)。

  (2)可以使用折半方法查找元素,效率較高。

string[] array = new string[3];

//賦值
array[0] = "a";
array[1] = "b";
array[2] = "c";

//修改
array[2] = "a1";

缺點:

  (1)數組必須在聲明的時候指定數組長度和維數,並且在存取數組元素的時候不能越界,越界會造成數據溢出錯誤。

  (2)插入和刪除元素效率比較低,且比較麻煩。

 

ArrayList的定義

  ArrayList是動態數組,是Array的復雜版本,它提供了動態添加和減少元素,實現了ICollection和IList接口,可以靈活設置數組的大小。

ArrayList的特點

  (1)ArrayList數組的長度可以動態指定,其大小可以在初始化時指定,也可以不指定,因此其在托管堆上存放並不一定連續。

  (2)ArrayList數據可以存放不同類型數據(因為它里面存放的都是被裝箱了的Object類型,實際上ArrayList內部就是使用"object[] _items;"這樣一個私有字段來封裝對象的)。

  (3)ArrayList可以在任意位置插入或刪除數項。

ArrayList的優缺點

優點:

  (1)初始化時可以不指定長度,並且可以動態插入或刪除項,其長度可以動態擴充和收縮。

  (2)存放的數據類型可以是不同類型的數據。

 

ArrayList arrayList = new ArrayList();

//添加
arrayList.Add("a");
arrayList.Add("b");
結果為ab

//插入
arrayList.Insert(0,"cc");
結果為ccab

//移除
//從ArrayList中移除特定對象的第一個匹配項,注意是第一個
arrayList.Remove('c');
結果為cab

//移除ArrayList的指定索引處的元素
arrayList.RemoveAt(0);
結果為ab;

//清除所有元素
arrayList.Clear();

//排序
arrayList.Sort();

//查找
arrayList.IndexOf("a")

缺點:

  (1)ArrayList不是類型安全的,其插入的數據當做Object類型處理,因此在處理數據是可能會報類型不匹配錯誤。

  (2)由於存在裝箱和拆箱操作,會帶來很大的性能損耗,所以存取效率低。

 

List的定義

  List是ArrayList的范型等效類,List類也繼承了IList接口,其大部分用法與ArrayList相似,最關鍵的區別是,在聲明List集合時需要為其聲明List集合內數據的對象類型,往List中插入其它(非聲明數據類型)數據類型元素時將會報錯,因此其是類型安全的。

數組結構的特點:

  (1)聲明時必須指定數據集內元素的數據類型,且數據元素類型必須相同。

  (2)可以動態插入或刪除數據元素。

  (3)數據操作是類型安全的且不存在裝箱和拆箱操作,因此效率較高。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM