C#學習筆記 ----集合

來源:互聯網
上載者:User

標籤: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#學習筆記 ----集合

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.