天天看點

.net中集合、容器(Collection)的這些事

一般的開發中常用的集合有:

清單:List

集合:Set

字典:Dictionary

隊列:Queue

棧:Stack

隻要知道了這些名字,在FCL庫中可以找到合适的實作,如下列出了各種類,根據需要選擇即可。

<b>命名空間</b>

<b>引入的.net</b><b>版本</b>

<b>說明</b>

<b>集合執行個體</b>

<b>System.Collections</b><b> </b>

1.0

普通的集合類、接口等

ArrayList

BitArray

HashTable

Queue

SortedList

Stack

<b>System.Collections.Specialized</b><b></b>

特定的強類型集合

HybridDictionary

ListDictionary

NameValueCollection

OrderedDictionary

StringCollection

StringDictionary

<b>1.0</b><b>的集合類僅在相容以前代碼時使用,現在一般使用如下的類</b>

<b>System.Collections.Generic</b><b></b>

2.0

泛型的集合

更好的類型安全和性能

Dictionay&lt;T,V&gt;

HashSet&lt;T&gt;

LinkedList&lt;T&gt;

List&lt;T&gt;

Queue&lt;T&gt;

SortedDictionary&lt;T,V&gt;

SortedSet&lt;T&gt;

Statck&lt;T&gt;

3.0

線程安全容器

SynchronizedCollection&lt;T&gt;

SynchronizedKeyedCollection&lt;K, T &gt;

SynchronizedReadOnlyCollection&lt; T &gt;

<b>System.Collections.ObjectModel</b>

用于屬性和方法傳回類型

可重用庫設計時使用

Collection&lt;T&gt;

KeyedCollection&lt;T,V&gt;

ObervableCollection&lt;T&gt;

ReadOnlyCollection&lt;T&gt;

ReadOnlyObervableCollection&lt;T&gt;

<b>System.Collections.Concurrent</b>

<b> </b>

4.0

線程安全集合

處理了線程的并發通路

非阻塞[如果一個線程試圖提取一個不存在的元素,線程立即傳回]

ConcurrentBag&lt;T&gt;

ConcurrenDictionary&lt;T,V&gt;

ConcurrenQueue&lt;T&gt;

ConcurrenStack&lt;T&gt;

ConcurrenDictionary的枚舉GetEnumerator不傳回快照,其他傳回快照

阻塞集合

BlockingCollection&lt;(T&gt;

Wintellect提供了類似STL的集合和算法類

集合類

BigList&lt;T&gt;

有序T的結合,操作100個以上的資料項效率高

Bag&lt;T&gt;

無序T的集合,集合進行了哈希處理,允許重複項

OrderedBag&lt;T&gt;

有序T的集合,允許重複項

Set&lt;T&gt;

無序T的集合,不允許重複項

OrderedSet&lt;T&gt;

有序T的集合,不允許重複項

Deque&lt;T&gt;

雙端隊列

OrderedDictionary&lt;T,V&gt;

字典,鍵進行了排序

MultiDictionary&lt;T,V&gt;

字典,每個鍵有多個值,允許重複鍵,資料項無序

Ordered MultiDictionary&lt;T,V&gt;

字典,每個鍵有多個值(值也進行了排序),允許重複鍵,鍵進行了排序

<b>Algorithms</b><b></b>

針對泛型集合的查找、替換、排序、轉換、組合等各種算法的實作類

[優先使用集合類自帶的算法函數,隻有在沒有需要的函數時才使用這些通用的算法和STL的道理一樣]

繼續閱讀