C#泛型資料結構和特點
阿新 • • 發佈:2019-02-17
資料結構
Array 陣列
缺點
1在陣列的兩個資料間插入資料是很麻煩的,
2宣告陣列的時候必須指定陣列的長度,
3陣列的長度過長,會造成記憶體浪費,過段會造成資料溢位的錯誤。
ArrayList 陣列 是個介面
1裝箱拆箱 效率低
2資料型別不安全
List 陣列
缺點
1個List<T> 本質上是將其可能是吧整個list拆分成多個數據儲存在一個堆疊的陣列上,
因為這個是一個數組,所以其對插入和刪除這類的操作效率並不高
優點
1List<T> 效能優於LinkedList<T>的地方是你在使用索引進行訪問的時候
2在List<T> 中增加、刪除節點的速度,大體上快於使用LinkedList<T> 時的相同操作
LinkedList 雙向連結串列
缺點
1LinkedList<T> 中,你必須通過Previous或Next屬性遍歷整個List 查詢慢
優點
1而LinkedList<T> 是將其所有節點儲存在堆疊上
SortedList<TKey, TValue> 連結串列
優點
當你要維護一個集合按一定規則排序時(初始如果是排序的),並且只會頻繁的查詢,而很少插入和 刪除的話,推薦使用此集合。
HashSet Hash表
特點
提供了高效能的集運算。一組是一個集合,不包含任何重複的元素,且的元素順序不分先後。
1提數學操作設定 等方法 確定 set 是否相等、 重疊的集 組新增 (聯合),並設定減法
HashTable Hash表
特點
HashTable中的被佔用空間達到一個百分比的時候就將該空間自動擴容 .net中這個百分比是72% 擴容大小是當前空間大小的兩倍最接近的素數
表示根據鍵的雜湊程式碼進行組織的鍵/值對的集合
缺點
1 拆箱 裝箱
優點
1可以通過Hashtable tab = Hashtable.Synchronized(new Hashtable()); 獲得執行緒安全的物件。
Dictionary Hash表
特點
當你維護的一個集合不要求排序,而主要用來插入、刪除和查詢的話,推薦使用此集合。
單執行緒的時候使用Dictionary更好一些
Queue<T> 佇列
特點
預設情況下,Queue<T> 的初始容量為32, 增長因子為2.0。,容量增長2倍。
Stack<T>
特點
預設容量為10。
SortedDictionary 紅黑樹
SortedList 內部由一個排序後的陣列對實現
可以通過索引或鍵獲取元素
優點
是可對未排序的資料執行更快的插入和刪除操作(O(log n))
缺點
是使用的記憶體比SortedList<TKey, TValue> 多,並且如果使用排序資料一次性填充列表,則 SortedList<TKey, TValue> 比 SortedDictionary<TKey, TValue> 快。
SortedSet 線性表