Array, ArrayList, List, Dictionary, HashSet, Stack, Queue -c#

Array:

數組在創建的時候,數組的大小也被要求確定(fixed in size),并且無法在原有數組上添加和刪除項,只能覆蓋原有數組。

ArrayList

數組列表的存儲對象是Object類型,所以同一個數組中數據類型并不固定。即你可以實例化一個數組列表并且添加不同數據類型的值。(數組列表在泛型出現之前比較常用,但是它是類型不安全的)

List

列表的存儲對象是Object類型,但是同一列表,存儲的數據類型一致。列表可以通過index獲取數據值。列表是存入數組里,當原有數組空間不夠大會自動創建一個更大的空間,并把原有的數據拷貝到新的數組內。

在列表開頭或中間位置添加/刪除項 , 之后的所有項需要移動重新拷貝到新的位置。時間復雜度 O(n)

在列表結尾添加/刪除項, 如果不考慮空間不足重新開辟新數組空間的情況,時間復雜度是 O(1)

查詢數據值,需要從頭一個一個對比查詢(liner search), 時間復雜度 O(n)

根據索引獲取數據值, O(1)

Dictionary

Dictionary的存儲方式需要提供key, value對, 而且key是唯一不重復的。字典也是存入數組里面,但是和List不同的是,Dictionary是采用Hash算法進行存儲(根據已知的Key,通過Hash算法以及數組大小得到相應的存儲位置,所以Key要求唯一且不能為空)。對于Dictionary, 插入,刪除,查找的時間復雜度均為O(1)。

HashSet

HashSet是存入一組唯一的數據項(不會出現重復項)(當試圖存入原來存在的數據項的時候,原有數據項位置會被重寫,而且數據項的數量不會增加,HashSet.Count 的值不變),和Dictionary相同的是,它們都采用Hash算法進行存儲,不同的是不需要存入key, value對。時間復雜度與Dictionary類似。

Stack

Stack先進后出,當需要返回的時候可以采用棧,也是存入數組里面。Pop O(1), Push O(1)-O(n), Contains O(n)

Queue

Queue先進先出,當我們需要根據存入的順序去返回值的時候可以采用隊列。

總結:

List:當你需要通過索引獲取值的時候比較快,但是查詢的時候比較慢,因為是線性查找。

Dictionary:它提供了一種用Key快速查詢的方式。

HashSet: 當要求判斷值是否存在可以采用HashSet,當然查詢也很快。

Stack: 當需要提供用戶返回的行為功能時可以使用。

Queue: 當提供用戶根據存入順序進行返回的行為時可以使用。

參考網址:

http://programmingwithmosh.com/csharp/csharp-collections/?

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,779評論 18 399
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,526評論 0 3
  • 一、覺察日記 【事實】今天聽著名的經濟學家講中國經濟,受益匪淺 【感受】很受啟發,很興奮 【意圖】希望自己可以學習...
    以詩為名閱讀 182評論 0 0
  • 讓被拒絕成為習慣 下午,一名推銷員進店銷售文具,諸如圓珠筆,大頭筆之類, 說實在的,這種業務員見多了, 一個...
    vte0769閱讀 544評論 0 1