| 集合 | Add | Insert | Remove | Indexer | Sort | Find |
|---|---|---|---|---|---|---|
List<T> | O(1)* | O(n) | O(n) | O(1) | O(n log n) | O(n) |
Stack<T> | O(1)* | N/A | O(1) | N/A | N/A | N/A |
Queue<T> | O(1)* | N/A | O(1) | N/A | N/A | N/A |
HashSet<T> | O(1)* | N/A | O(1) | N/A | N/A | N/A |
LinkedList<T> | O(1) | O(1) | O(1) | N/A | N/A | O(n) |
Dictionary<TKey,TValue> | O(1)* | N/A | O(1) | O(1) | N/A | N/A |
SortedDictionary<TKey,TValue> | O(log n) | N/A | O(log n) | O(log n) | N/A | N/A |
SortedList<TKey,TValue> | O(n) / O(log n)* | N/A | O(n) | O(log n) | N/A | N/A |
* 可能觸發擴容,擴容為 O(n)。
List<T>Queue<T>Stack<T>HashSet<T>LinkedList<T>Dictionary<TKey,TValue>SortedDictionary<TKey,TValue>(紅黑樹,插入較快)SortedList<TKey,TValue>(陣列二分搜尋)List<T> 預設容量 0,已知大概筆數時用建構子指定 new List<T>(capacity) 避免多次擴容。Dictionary 使用雜湊表,GetHashCode 與 Equals 實作品質直接影響效能。foreach 中修改集合,改用 for 反向迴圈或 RemoveAll。FrozenSet<T>、FrozenDictionary<TKey,TValue> 唯讀高效能查找。理解各集合的底層資料結構(動態陣列、雜湊表、紅黑樹、雙向鏈表)即可推導複雜度。實務上「先正確、再測量、最後優化」,依實際資料量與存取模式選型,比死記複雜度更有效。