1. 程式人生 > >C#泛型資料結構和特點

C#泛型資料結構和特點

資料結構 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 線性表