隐藏

C#学习笔记——集合与数据结构

发布:2015/8/1 12:48:33作者:管理员 来源:本站 浏览次数:1425

.NETFrameworkSystem.Collections命名空间包含若干用于实现集合的接口和类,并提供有效地处理这些紧密相关的数据的各种算法。

 

. System.Collections 命名空间

System.Collections命名空间包含具有以下功能的类型:定义各种标准的、专门的、通用的集合对象。命名空间

命名空间

说明

System.Collections

System.Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。

System.Collections.Concurrent

System.Collections.Concurrent命名空间提供多个线程安全集合类。当有多个线程并发访问集合时,应使用这些类代替System.CollectionsSystem.Collections.Generic命名空间中的对应类型。

System.Collections.Generic

System.Collections.Generic命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。

System.Collections.ObjectModel

System.Collections.ObjectModel名称空间包含可在可重用库的对象模型中用作集合的类。在属性或方法返回集合时使用这些类。

System.Collections.Specialized

System.Collections.Specialized命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。

 

 

1. System.Collections

System.Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。

类型

类型名称

说明

 

 

 

ArrayList

使用大小会根据需要动态增加的数组来实现IList接口。数组链表集合。

 

BitArray

管理位值的压缩数组,该值表示为布尔值,其中true表示位是打开的(1)false表示位是关闭的(0)

 

CaseInsensitiveComparer

比较两个对象是否相等,比较时忽略字符串的大小写。

 

CaseInsensitiveHashCodeProvider

已过时。使用忽略字符串大小写的哈希算法,为对象提供哈希代码。

 

CollectionBase

为强类型集合提供abstract基类。

 

Comparer

比较两个对象是否相等,其中字符串比较是区分大小写的。

 

DictionaryBase

为键/值对的强类型集合提供abstract基类。

 

Hashtable

表示根据键的哈希代码进行组织的键/值对的集合。

 

Queue

表示对象的先进先出集合。

 

ReadOnlyCollectionBase

为强类型非泛型只读集合提供abstract基类。

 

SortedList

表示键/值对的集合,这些键值对按键排序并可按照键和索引访问。

 

Stack

表示对象的简单后进先出(LIFO)非泛型集合。

 

StructuralComparisons

提供用于对两个集合对象执行结构比较的对象。

结构

 

 

 

DictionaryEntry

定义可设置或检索的字典键/值对。

接口

 

 

 

ICollection

定义所有非泛型集合的大小、枚举数和同步方法。

 

IComparer

公开一种比较两个对象的方法。

 

IDictionary

表示键/值对的非通用集合。

 

IDictionaryEnumerator

枚举非泛型字典的元素。

 

IEnumerable

公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。

 

IEnumerator

支持对非泛型集合的简单迭代。

 

IEqualityComparer

定义方法以支持对象的相等比较。

 

IHashCodeProvider

已过时。使用自定义哈希函数为对象提供哈希代码。

 

IList

表示可按照索引单独访问的对象的非泛型集合。

 

IStructuralComparable

支持集合对象的结构比较。

 

IStructuralEquatable

定义方法以支持对象的结构相等性比较。

 

 

2. System.Collections.Generic

System.Collections.Generic命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。


类型

类型名称

说明

 

 

 

Comparer<T>

IComparer<T>泛型接口的实现提供基类。

 

Dictionary<TKey,TValue>

表示键和值的集合。

 

Dictionary<TKey,TValue>.KeyCollection

表示Dictionary<TKey,TValue>中键的集合。此类不能被继承。

 

Dictionary<TKey,TValue>.ValueCollection

表示Dictionary<TKey,TValue>中值的集合。此类不能被继承。

 

EqualityComparer<T>

IEqualityComparer<T>泛型接口的实现提供基类。

 

HashSet<T>

表示值的集。

 

KeyedByTypeCollection<TItem>

提供一个集合,该集合的项是用作键的类型。

 

KeyNotFoundException

指定用于访问集合中元素的键与集合中的任何键都不匹配时所引发的异常。

 

LinkedList<T>

表示双向链接列表。

 

LinkedListNode<T>

表示LinkedList<T>中的节点。此类不能被继承。

 

List<T>

表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法。

 

Queue<T>

表示对象的先进先出集合。

 

SortedDictionary<TKey,TValue>

表示根据键进行排序的键/值对的集合。

 

SortedDictionary<TKey,TValue>.KeyCollection

表示SortedDictionary<TKey,TValue>中键的集合。此类不能被继承。

 

SortedDictionary<TKey,TValue>.ValueCollection

表示SortedDictionary<TKey,TValue>中值的集合。无法继承此类

 

SortedList<TKey,TValue>

表示根据键进行排序的键/值对的集合,而键基于的是相关的IComparer<T>实现。

 

SortedSet<T>

表示按排序顺序保持的对象的集合。

 

Stack<T>

表示相同任意类型的实例的可变大小的后进先出(LIFO)集合。

 

SynchronizedCollection<T>

提供一个线程安全集合,其中包含泛型参数所指定类型的对象作为元素。

 

SynchronizedKeyedCollection<K,T>

提供一个线程安全集合,该集合所含对象的类型由一个泛型参数指定,并且集合根据键进行分组。

 

SynchronizedReadOnlyCollection<T>

提供一个线程安全只读集合,该集合包含泛型参数所指定的类型的对象作为元素。

结构

 

 

 

Dictionary<TKey,TValue>.Enumerator

枚举Dictionary<TKey,TValue>的元素。

 

Dictionary<TKey,TValue>.KeyCollection.Enumerator

枚举Dictionary<TKey,TValue>.KeyCollection的元素。

 

Dictionary<TKey,TValue>.ValueCollection.Enumerator

枚举Dictionary<TKey,TValue>.ValueCollection的元素。

 

HashSet<T>.Enumerator

枚举HashSet<T>对象的元素。

 

KeyValuePair<TKey,TValue>

定义可设置或检索的键/值对。

 

LinkedList<T>.Enumerator

枚举LinkedList<T>的元素。

 

List<T>.Enumerator

枚举List<T>的元素。

 

Queue<T>.Enumerator

枚举Queue<T>的元素。

 

SortedDictionary<TKey,TValue>.Enumerator

枚举SortedDictionary<TKey,TValue>的元素。

 

SortedDictionary<TKey,TValue>.KeyCollection.Enumerator

枚举SortedDictionary<TKey,TValue>.KeyCollection的元素。

 

SortedDictionary<TKey,TValue>.ValueCollection.Enumerator

枚举SortedDictionary<TKey,TValue>.ValueCollection的元素。

 

SortedSet<T>.Enumerator

枚举SortedSet<T>对象的元素。

 

Stack<T>.Enumerator

枚举Stack<T>的元素。

接口

 

 

 

ICollection<T>

定义操作泛型集合的方法。

 

IComparer<T>

定义类型为比较两个对象而实现的方法。

 

IDictionary<TKey,TValue>

表示键/值对的泛型集合。

 

IEnumerable<T>

公开枚举数,该枚举数支持在指定类型的集合上进行简单迭代。

 

IEnumerator<T>

支持在泛型集合上进行简单迭代。

 

IEqualityComparer<T>

定义方法以支持对象的相等比较。

 

IList<T>

表示可按照索引单独访问的一组对象。

 

IReadOnlyCollection<T>

表示元素的强类型的只读集合。

 

IReadOnlyDictionary<TKey,TValue>

表示键/值对泛型只读集合对。

 

IReadOnlyList<T>

表示可以按索引获取元素的只读集合。

 

ISet<T>

提供用于集的抽象化的基接口。

 

3. System.Collections.Specialized

System.Collections.Specialized命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。

类型

类型名称

说明

 

 

 

CollectionChangedEventManager

提供WeakEventManager实现,以便可以使用“弱事件侦听器”模式附加CollectionChanged事件的侦听器。

 

CollectionsUtil

创建忽略字符串大小写的集合。

 

HybridDictionary

通过以下方法来实现IDictionary:在集合较小时使用ListDictionary,然后在集合变大时切换到Hashtable

 

ListDictionary

使用单向链接列表实现IDictionary。建议为通常包括少于10个项目的集合。

 

NameObjectCollectionBase

为关联的String键和Object值的集合(可通过键或索引来访问它)提供abstract基类。

 

NameObjectCollectionBase.KeysCollection

表示集合的String键的集合。

 

NameValueCollection

表示可通过键或索引访问的关联String键和String值的集合。

 

NotifyCollectionChangedEventArgs

CollectionChanged事件提供数据。

 

OrderedDictionary

表示键或索引可访问的键/值对的集合。

 

StringCollection

表示字符串的集合。

 

StringDictionary

使用字符串(而不是对象)强类型的键和值来实现哈希表。

 

StringEnumerator

支持在StringCollection上进行简单迭代。

结构

 

 

 

BitVector32

提供一个简单结构,该结构以32位内存存储布尔值和小整数。

 

BitVector32.Section

表示可以包含整数的向量的节。

接口

 

 

 

INotifyCollectionChanged

向侦听器通知动态更改,如在添加或移除项时或在刷新整个列表时。

 

IOrderedDictionary

表示键/值对的索引集合。

委托

NotifyCollectionChangedEventHandler

表示处理CollectionChanged事件的方法。

枚举

NotifyCollectionChangedAction

描述引起了CollectionChanged事件的操作。

 

 

4. System.Collections.Concurrent 命名空间

System.Collections.Concurrent命名空间提供多个线程安全集合类。当有多个线程并发访问集合时,应使用这些类代替System.CollectionsSystem.Collections.Generic命名空间中的对应类型。

类型

类型名称

说明

 

 

 

BlockingCollection<T>

为实现IProducerConsumerCollection<T>的线程安全集合提供阻塞和限制功能。

 

ConcurrentBag<T>

表示对象的线程安全的无序集合。

 

ConcurrentDictionary<TKey,TValue>

表示可由多个线程同时访问的键值对的线程安全集合。

 

ConcurrentQueue<T>

表示线程安全的先进先出(FIFO)集合。

 

ConcurrentStack<T>

表示线程安全的后进先出(LIFO)集合。

 

OrderablePartitioner<TSource>

表示将一个可排序数据源拆分成多个分区的特定方式。

 

Partitioner

提供针对数组、列表和可枚举项的常见分区策略。

 

Partitioner<TSource>

表示将一个数据源拆分成多个分区的特定方式。

接口

 

 

 

IProducerConsumerCollection<T>

定义供制造者/使用者用来操作线程安全集合的方法。此接口提供一个统一的表示(为生产者/消费者集合),从而更高级别抽象如System.Collections.Concurrent.BlockingCollection<T>可以使用集合作为基础的存储机制。

枚举

 

 

 

EnumerablePartitionerOptions

即开即用分区程序使用创建设置默认行为。例如,默认情况下,缓冲区的某种形式和多级组块将使用完成IEnumerable<T>实现是快速、非阻塞常见方案的最佳性能。使用此枚举,这些行为可重写。

 

 

5. System.Collections.ObjectModel 命名空间

System.Collections.ObjectModel名称空间包含可在可重用库的对象模型中用作集合的类。在属性或方法返回集合时使用这些类。

类型

类型名称

说明

 

 

 

Collection<T>

提供泛型集合的基类。

 

KeyedCollection<TKey,TItem>

提供集合键嵌入在值中的集合的抽象基类。

 

ObservableCollection<T>

表示一个动态数据集合,在添加项、移除项或刷新整个列表时,此集合将提供通知。

 

ReadOnlyCollection<T>

提供泛型只读集合的基类。

 

ReadOnlyDictionary<TKey,TValue>

表示键/值为只读,泛型集合对。

 

ReadOnlyDictionary<TKey,TValue>.KeyCollection

表示ReadOnlyDictionary<TKey,TValue>对象的关键的只读集合。

 

ReadOnlyDictionary<TKey,TValue>.ValueCollection

表示ReadOnlyDictionary<TKey,TValue>对象值的只读集合。

 

ReadOnlyObservableCollection<T>

表示只读ObservableCollection<T>