以下是 .NET 類庫提供的主要數(shù)據(jù)結(jié)構(gòu)分類列表(基于最新穩(wěn)定版本),涵蓋集合、線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖結(jié)構(gòu)等:
一、線性集合(順序存儲)
| 類型 |
描述 |
時間復雜度 |
List<T> |
動態(tài)數(shù)組,自動擴容 |
訪問: O(1) 插入/刪除: O(n) |
LinkedList<T> |
雙向鏈表 |
插入/刪除: O(1) 訪問: O(n) |
Queue<T> |
先進先出(FIFO)隊列 |
入隊/出隊: O(1) |
Stack<T> |
后進先出(LIFO)棧 |
入棧/出棧: O(1) |
ImmutableList<T> |
不可變列表 |
修改操作返回新實例 |
二、鍵值對集合(關(guān)聯(lián)存儲)
| 類型 |
描述 |
實現(xiàn)方式 |
Dictionary<TKey, TValue> |
哈希表實現(xiàn)的鍵值對 |
哈希表 |
SortedDictionary<TKey, TValue> |
基于二叉搜索樹的有序字典 |
紅黑樹 |
ConcurrentDictionary<TKey, TValue> |
線程安全的字典 |
分段鎖哈希表 |
ImmutableDictionary<TKey, TValue> |
不可變字典 |
哈希樹 |
Hashtable (非泛型) |
早期非泛型鍵值集合 |
哈希表 |
HybridDictionary |
小數(shù)據(jù)用List,大數(shù)據(jù)轉(zhuǎn)Hashtable |
混合實現(xiàn) |
三、特殊集合
| 類型 |
描述 |
典型用途 |
HashSet<T> |
不重復值的哈希集合 |
去重/集合運算 |
SortedSet<T> |
有序不重復集合 |
范圍查詢 |
BitArray |
位操作集合 |
緊湊存儲布爾值 |
ObservableCollection<T> |
可通知變化的集合 |
WPF數(shù)據(jù)綁定 |
BlockingCollection<T> |
線程安全的生產(chǎn)者-消費者模型 |
并發(fā)隊列 |
四、多維/復雜結(jié)構(gòu)
| 類型 |
描述 |
Array (所有數(shù)組) |
基礎(chǔ)的多維數(shù)組 |
ArraySegment<T> |
數(shù)組片段 |
Memory<T>/Span<T>
|
高性能內(nèi)存視圖 |
DataTable |
內(nèi)存關(guān)系表(ADO.NET) |
五、并發(fā)數(shù)據(jù)結(jié)構(gòu)(System.Collections.Concurrent)
| 類型 |
描述 |
ConcurrentQueue<T> |
線程安全隊列 |
ConcurrentStack<T> |
線程安全棧 |
ConcurrentBag<T> |
無序線程安全集合 |
Partitioner<T> |
并行任務(wù)數(shù)據(jù)分區(qū)工具 |
六、不可變集合(System.Collections.Immutable)
| 類型 |
描述 |
ImmutableArray<T> |
高性能不可變數(shù)組 |
ImmutableQueue<T> |
不可變隊列 |
ImmutableStack<T> |
不可變棧 |
ImmutableHashSet<T> |
不可變哈希集合 |
七、遺留集合(非泛型,不推薦新項目使用)
| 類型 |
替代方案 |
ArrayList |
List<T> |
Queue |
Queue<T> |
Stack |
Stack<T> |
SortedList |
SortedDictionary<TKey,TValue> |
八、選擇指南
-
需要快速查找 →
Dictionary<TKey, TValue>
-
需要有序遍歷 →
SortedDictionary<TKey, TValue>
-
線程安全需求 →
ConcurrentDictionary<TKey, TValue>
-
高性能只讀場景 →
ImmutableArray<T>
-
先進先出處理 →
Queue<T> 或 ConcurrentQueue<T>
九、性能關(guān)鍵點
-
內(nèi)存連續(xù)性:
List<T> 和 Array 對CPU緩存友好
-
哈希沖突:
Dictionary 的擴容開銷(默認容量為素數(shù))
-
樹結(jié)構(gòu)平衡:
SortedDictionary 使用紅黑樹保證操作穩(wěn)定在 O(log n)
所有類型均位于 System.Collections 或 System.Collections.Generic 命名空間,需要時添加對應(yīng) using 指令。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。