C#基礎:C#中的數據結構


一、數組(Array)

數組具有以下的特點:

  1. 數組屬於線性結構,在內存中是連續存放的。
  2. 數組的元素類型必須相同。
  3. 數組可以直接通過下標訪問。
  4. 數組的查找速度非常快,新增和刪除速度慢。
  5. 數組在初始化時要指定數組長度。

二、動態數組(ArrayList)

動態數組具有以下的特點:

  1. ArrayList的底層其實就是一個數組。
  2. ArrayList在聲明時不必指定長度,會根據存儲的數據動態的增加或減少長度。
  3. ArrayList會把所有的元素都當做Object處理,因此可以存儲不同數據類型的元素。
  4. 插入和刪除一個元素時,會移動它之后所有元素的位置,效率低,頻繁進行插入或者刪除元素推薦使用LinkedList。
  5. ArrayList是非類型安全的,在插入和刪除元素時會進行拆箱和裝箱問題,影響性能,效率低。

三、泛型List

泛型List具有以下的特點:

  1. List是ArrayList的泛型類。
  2. 泛型List需要在聲明時指定具體的類型。
  3. 泛型List沒有裝箱和拆箱操作,因此List比ArrayList效率高而且類型安全。

四、雙向鏈表(LinkedList)

雙向鏈表具有如下特點:

  1. 鏈表的節點在內存中的空間是不連續的,每塊空間稱作一個節點,每個節點都存有一個前驅和后置指針,分別指向前一個節點和后一個節點,因此向鏈表中添加和刪除元素的效果高,只需要更改相應節點的指針指向即可。
  2. 鏈表的查找效率低。查找元素時不能通過下標進行訪問,只能從頭開始通過地址按順序查找。

五、堆棧(Stack)

堆棧具有如下特點:

  1. 堆棧是先進后出的原則,最先插入的元素最后被訪問,最后插入的元素最先被訪問。
  2. Push入棧,Pop出棧並返回棧頂元素,Peek只返回棧頂元素。

六、Queue(鏈表)

鏈表具有以下特點:

  1. 鏈表是先進先出的原則,最先進入的元素最先被訪問,最后進入的元素最后被訪問。
  2. Enqueue入隊列,Dequeue出隊列並返回列首元素,Peek只返回列首元素。 

七、字典(Dictionary)

字典具有以下特點:

  1. 創建字典時需要指定key和value的數據類型。
  2. 字典中的key值是唯一的,value的值可以不唯一。
  3. 可以通過key快速查找對應的value,速度快,但是消耗內存。

二、幾種常見數據結構的使用情景

Array 需要處理的元素數量確定並且需要使用下標進行訪問時可以考慮,不過建議使用List<T>。
ArrayList 不推薦使用,建議使用泛型List<T>。
泛型List<T> 需要處理的元素數量不確定時,通常建議使用。
LiskedList<T> 鏈表適合元素數量不固定,而且需要經常增減節點的情況,鏈表增減元素效率高。
Queue<T> 隊列適合於先進先出的情況。
Stack<T> 堆棧適合於先進后出的情況。
Dictionary<K,T> 字典適合於需要鍵值對操作的情況。

 


免責聲明!

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



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