1、简单的命名空间:
(1)Array、Enum
、String
、Obj等:引入命名空间:using System;
(2)ArrayList、HashTable等: 引入命名空间: using System.Collections
(3)List<T>、
Queue
<T>: 引入命名空间:using System.Collections.Generic;
2、最长用的集合类进行简单的总结:{
非范型的基本已经不用了
ArraryList 后来被List<T>替代。
HashTable 后来被Dictionary<TKey,TValue>替代。
Queue 后来被Queue<T>替代。
SortedList 后来被SortedList<T>替代。
Stack 后来被Stack<T>替代。
}
集合
|
说明
|
List<T>、LinkedList<T>、SortedList<T>
|
可以像数组一样按索引访问列表,但提供了其他方法来搜索和排序;
双向有序列表,为任何一端的插入和删除进行了优化,这种集合既可作为队列,也可作为栈,还支持列表那样的随机访问;
键/值对的有序列表,键必须实现Icomparable<T>接口;
|
Queue<T>
|
先入先出数据结构,提供了方法将数据项添加到队列的一段,从另一端删除项,以及只检查不删除
|
Stack<T>
|
先入后出数据结构,提供了方法将数据压入栈顶,从栈顶出栈,以及只检查栈顶的项而不删除
|
HashSet<T>、SortedSet<T>
|
无序值列表,为快速数据获取而优化,提供了面向集合的方法来判断它容纳的项是不是另一个
HashSet<T>
对象中的项的子集,以及计算不同
HashSet<T>
对象的交集和并集;
有序Set,键必须实现Icomparable<T>接口
|
Dictionary<TKey,TValue>、
SortedDictionary<TKey, TValue>
|
字典集合根据键而不是索引来获取值
|
在SortedList中,键和值分别保存在一个数组中,当向Sorted添加一个元素时,SortedList类添加一个元素时,SortedList会首先对key进行排序,然后根据排序结果计算出要插入到集合中的位置索引,再分别将key和value插入到各自数组的指定索引位置。
Queue、Stack的一些重要特性。
1、Queue先进先出、Stack后进先出
2、可以添加null值到集合中
3、允许集合中的元素重复
4、Queue、Stack容量会按需自动添加
下面是各种常见集合类的定义:
[SerializableAttribute] [ComVisibleAttribute(true)] public abstract class Array : ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable [SerializableAttribute] public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IEnumerable, IList, ICollection, IReadOnlyList<T>, IReadOnlyCollection<T> [SerializableAttribute] [ComVisibleAttribute(false)] public class Queue<T> : IEnumerable<T>, IEnumerable, ICollection, IReadOnlyCollection<T> [SerializableAttribute] [ComVisibleAttribute(false)] public class Stack<T> : IEnumerable<T>, IEnumerable, ICollection, IReadOnlyCollection<T> [SerializableAttribute] [ComVisibleAttribute(false)] public class LinkedList<T> : ICollection<T>, IEnumerable<T>, IEnumerable, ICollection, IReadOnlyCollection<T>, ISerializable, IDeserializationCallback [SerializableAttribute] [HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)] public class HashSet<T> : ICollection<T>, IEnumerable<T>, IEnumerable, ISerializable, IDeserializationCallback, ISet<T>, IReadOnlyCollection<T> [SerializableAttribute] [ComVisibleAttribute(false)] public class Dictionary<TKey, TValue> : IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable, IDictionary, ICollection, IReadOnlyDictionary<TKey, TValue>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, ISerializable, IDeserializationCallback [SerializableAttribute] [ComVisibleAttribute(false)] public class SortedList<TKey, TValue> : IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable, IDictionary, ICollection, IReadOnlyDictionary<TKey, TValue>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>
3、非泛型和泛型集合的接口
IDictionary、IList接口--继承-> ICollection --继承-> IEnumerable接口(GetEnumerator方法)
IDictionary接口是键/值对接口,它的实现如HashTable类
而IList是值的集合,其成员可通过索引访问,如ArrayList类
非泛型集合接口
|
泛型集合接口
|
说明
|
ICollection
|
ICollection<T>
|
定义所有集合的大小(Count),枚举器(foreach)和同步(copyto)方法,继承自
IEnumerable
|
IList
|
IList<T>
|
表示可按照索引单独访问的一组对象(像数组一样)
|
IDictionary
|
IDictionary<T>
|
表示键/值对的集合
|
IComparer
|
IComparer<T>
|
定义类型为比较两个对象而实现的方法
|
IEqualityComparer
|
IEqualityComparer<T>
|
定义方法以支持对象的相等比较
|
IEnumerable
|
IEnumerable<T>
|
公开枚举器。实现了该接口意味着允许foreach语句循环访问集合中的元素
|
IEnumerator
|
IEnumerator<T>
|
支持在泛型集合上进行简单迭代
|
IEnumerable接口非常简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象(Current属性,MoveNext和Reset两个方法)