C#中的資料結構

Sol·wang發表於2021-05-30

Array

  • 連續性的記憶體空間
  • 快速定位查詢元素,隨機訪問性強,查詢效率高
  • 已知的統一的元素型別,減小執行時開銷
  • 固定長度,不能再新增元素

 

ArrayList

  • 連續性的記憶體空間
  • 快速定位查詢元素,隨機訪問性強,查詢效率高
  • 可變長度,便於對元素進行增刪操作
  • 未知的元素型別,Runtime需要型別檢測,Runtime需裝箱拆箱動作,為此產生效能開銷
  • 可對元素進行增刪改操作,需要重新調整後續元素的位置,為此產生效能開銷

 

List<T>

  • 連續性的記憶體空間
  • 快速定位查詢元素,隨機訪問性強,查詢效率高
  • 可變長度,便於對元素進行增刪操作
  • 泛型,統一的已知型別,避免執行時型別檢測,避免執行時裝箱拆箱,減少執行時效能開銷
  • 可對元素進行增刪改操作,需要重新調整後續元素的位置,為此產生效能開銷

 

LinkedList<T>

  • 可變長度,便於對節點(元素)進行增刪操作
  • 泛型,統一的已知型別,避免執行時型別檢測,避免執行時裝箱拆箱,減少執行時效能開銷
  • 無序的、分散儲存,靠節點(元素)中的指標指向關聯下一節點(元素),增刪速度相對快,不影響後續節點(元素)位置調整
  • 查詢效率低,不能隨機查詢,不支援迴圈,僅可從首(末)節點(元素) 透過指標指向逐次查詢下個節點(元素)

 

Stack

  • 棧:先進後出,小型的、連續性的、儲存變數及引數的記憶體空間,讀取速度快
  • 堆:無序的,儲存資料物件的記憶體區域,讀取速度相對慢,可手動釋放的區域

 

Queue

  • 線性的,有序的,先進先出
  • 隊尾插入,隊頭刪除
  • 順序佇列,預期長度;鏈式佇列,可變長度

 

Dictionary<K,T>

  • 雜湊儲存結構,鍵值對訪問,通過索引快速查詢
  • 不重複的鍵值,唯一性
  • 可迴圈的資料集
  • 泛型,避免執行時型別檢測,避免執行時裝箱拆箱
  • 雜湊儲存,不固定長度,新增刪除時,無需元素位置的調整

 

相關文章