C#數據結構

線程安全:
? 在堆內存中的數據由于可以被任何線程訪問到,在沒有限制的情況下存在被意外修改的風險
? 如果一段代碼在多個線程同時執行期間,內部能正確運行,則它是線程安全的
? 滿足多個線程訪問相同共享數據的需要

1.Array:

Array類是支持數組實現的基類,但是,只有系統和編譯器才能顯式從 Array 類派生。 用戶應使用該語言提供的數組構造。

特點:

  • 類型固定,如:new int[5] { 1, 2, 3, 4, 5 };
  • 容量固定,不支持擴容

2.ArrayList:

特點:

  • 內部實現基于數組
  • 元素為object類型,所以可能會裝箱拆箱
  • 支持擴容

3.List<T>

特點:

  • 內部實現基于數組
  • 泛型
  • 支持擴容

4.LinkedList<T> (雙重鏈表)

特點:

  • 內部實現基于鏈表
  • 泛型

5.Dictionary<TKey,TValue>

特點:

  • 內部實現基于hash表,數組buckets下標為hash值,并保存了對應到數組entries的下標,entries保存了Value等信息
  • 鏈表法解決哈希沖突
  • 泛型

6.Hashtable

特點:

  • 非泛型,可能會導致裝箱拆箱
  • 支持擴容
  • 線程安全

7.HashSet<T>

提供高性能的設置操作
HashSet<T> 可以將類視為 Dictionary<TKey,TValue> 沒有值的集合。

特點:

  • 泛型
  • 支持擴容
  • 不能包含重復元素(內部hash值實現)
  • 考慮稻高性能操作,不支持排序
  • 提供了許多數學集操作

8.SortedDictionary

9.SortedList

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

推薦閱讀更多精彩內容