標籤:style blog color io 使用 ar strong for 資料
List<T>是與數組相當的集合類。其他類型的集合:隊列、棧、鏈表和字典。
IEnumerable<T>如果將foreach語句用於集合,就需要IEnumerable介面。這個介面定義了方法GetEnumerator(),它返回一個實現了IEnumerator介面的枚舉。
ICollection<T>介面由泛型集合類實現。使用這個介面可以獲得集合中的元素個數,把集合複製到數組中,還可以從集合中添加和刪除元素。
IList<T>介面用於可通過位置訪問其中的元素列表,這個介面定義了一個索引器,可以在集合的指定位置插入或刪除某些項。List<T>介面派生自ICollection<T>介面。
IDictionary<TKey,TValue>介面包含鍵和值的泛型集合類實現。是用這個介面可以訪問所有的鍵和值,使用鍵類型的索引器可以訪問某些項,還可以添加或刪除某些項。
IComparer<T>介面由比較子實現,通過Compare()方法給集合中的元素排序
.NET Framework為動態列表提供了泛型類List<T>。這個類實現了IList、ICollection、IEnumerable、IList<T>、ICollection<T>和IEnumerable<T>介面
建立列表 調用預設的建構函式,就可以建立列表對象
Capacity屬性可以擷取和設定集合的容量
集合初始值設定項給集合賦值
var intList = new List<int>() {1,2};//添加元素intList.Add(1);
使用List<T>類的AddRange()方法,可以一次給集合添加多個元素
//插入元素racers.Insert(3,new Racer(6,"Phil","Hill","USA",3));
方法InsertRange()提供插入大量元素功能
//訪問元素//使用索引器Racer rr = racers[3]
List<T>集合類實現了IEnumerable介面,所以可以使用foreach語句遍曆
List<T>類還提供了ForEach()方法
//刪除元素racers.RemoveAt(3);
搜尋 使用的方法IndexOf()、LastIndexOf()、FindIndex()、FindLastIndex()、Find()、FindLast()
排序 List<T>類可以使用Sort()方法對元素排序
唯讀集合 List<T>集合的AsReadOnly()方法返回ReadOnlyCollection<T>類型對象
隊列
以先進先出(FIFO)的方式來處理的集合
System.Collections.Generic名稱空間中的泛型類Queue<T>實現
Queue<T>類的方法
Count屬性返回隊列中的元素個數
Enqueue()方法在隊列一端添加一個元素
Dequeue()方法在隊列的頭部讀取和刪除一個元素
Peek()方法在隊列的頭部讀取一個元素,但不刪除它
TrimExcess()方法重新設定隊列的容量
棧
後進先出(LIFO)的容器
Statck<T>類
Count返回棧中的元素個數
Push()在棧頂添加一個元素
Pop()從棧頂刪除一個元素,並返回該元素
Peek()返回棧頂的元素,但不刪除它
Contains()確定某個元素是否在棧中,如果是,返回true
鏈表
鏈表不僅能在列表中儲存元素。儲存元素時,鏈表還必須儲存每個元素儲存下一個元素和上一個元素的資訊。
這就是LinkedList<T>包含LinkedListNode<T>類型的元素的原因。
LinkedList<T>類定義的成員可以訪問鏈表中的第一個和最後一個元素(First和Last)、在指定位置插入元素(AddAfter()、AddBefore()、AddFirst()、AddLast()方法)
,刪除指定位置的元素(Remove()、RemoveFirst()和RemoveLast()方法)、從鏈表的開頭(Find()方法)或結尾(FindLast()方法)開始搜尋元素。
有序列表
如果需要基於鍵對所需集合排序,就可以使用SortedList<TKey,TValue>類
列舉程式返回的元素是KeyValuePair<TKey,TValue>類型
字典
字典表示一種非常複雜的資料結構,這種資料結構允許按照某個鍵來訪問元素。字典也成為映射或散射列表。
字典的主要特性是能根據鍵快速尋找值
主要的類是Dictionary<TKey,TValue>
用作字典中鍵的類型必須重寫Object類的GetHashCode()方法。只要字典類需要確定元素的位置,它就要調用GetHashCode()方法。
Dictionary<TKey,TValue>類支援每個鍵關聯一個值
Lookup<TKey,TElement>類把鍵映射到一個值集上
有序字典
SortedDictionary<TKey,TValue>類是一個二叉搜尋樹,其中的元素根據鍵來排序
SortedList<TKey,TValue>實現基於數組的列表
SortedDictionary<TKey,TValue>類實現為一個字典
SortedList<TKey,TValue>類使用的記憶體比SortedDictionary<TKey,TValue>類少
SortedDictionary<TKey,TValue>類的元素插入和刪除速度比較快
在用已排好序的資料填充集合時,若不需要修改容量,SortedList<TKey,TValue>類就比較快
包含不重複元素的集合稱為“集(set)”
HashSet<T>集包含不重複元素的無序列表
SortedSet<T>集包含不重複元素的有序列表
都實現ISet<T>介面
ISet<T>介面提供的方法可以建立合集、交集,或者給出一個集是另一個集的超集或子集的資訊。
可觀察的集合
如果需要集合中的元素何時刪除或添加的資訊,就可以使用ObservableCollection<T>類
位組數
如果需要處理的數字有許多位,就可以使用BitArray類和BitVector32結構
並發集合
.NET 4包含的新名稱空間System.Collections.Concurrent有幾個安全執行緒的集合類
安全執行緒的集合可防止多個線程以相互衝突的方式訪問集合
為了對集合進行安全執行緒的訪問,定義了IProducerConsumerCollection<T>介面
C#學習筆記 ----集合