赞
踩
数组是一种指定长度和数据类型的对象,在实际应用中有局限性
集合正是为这种局限性而生的,集合的长度能根据需要更改,也允许存放任何数据类型的值
集合和数组比较类似,都用于存放一组值,但集合中提供了特定的方法直接操作集合中的数据,并提供了不同的集合来实现特定的功能。
所有集合类或与集合相关的接口命名空间都是 System.Collection,在该命名空间中提供的常用接口如下表所示。
接口名称 | 作用 |
---|---|
IEnumerable | 用于迭代集合中的项,该接口是一种声明式的接口 |
IEnumerator | 用于迭代集合中的项,该接口是一种实现式的接口 |
ICollection | .NET 提供的标准集合接口,所有的集合类都会直接或间接地实现这个接口 |
IList | 继承自 IEnumerable 和 ICollection 接口,用于提供集合的项列表,并允许访问、查找集合中的项 |
IDictionary | 继承自 IEnumerable 和 ICollection 接口,与 IList 接口提供的功能类似,但集 合中的项是以键值对的形式存取的 |
IDictionaryEnumerator | 用于迭代 IDictionary 接口类型的集合 |
针对上表中的接口有一些常用的接口实现类,如下表所示。
类名称 | 实现接口 | 特点 |
---|---|---|
ArrayList | ICollection、IList、IEnumerable、ICloneable | 集合中元素的个数是可变的,提供添加、删除等方法 |
Queue | ICollection、IEnumerable、ICloneable | 集合实现了先进先出的机制,即元素将在集合的尾部添加、在集合的头部移除 |
Stack | ICollection、IEnumerable、ICloneable | 集合实现了先进后出的机制,即元素将在集合的尾部添加、在集合的尾部移除 |
Hashtable | IDictionary、ICollection、IEnumerable、 ICloneable 等接口 | 集合中的元素是以键值对的形式存放的,是 DictionaryEntry 类型的 |
SortedList | IDictionary、ICollection、IEnumerable、 ICloneable 等接口 | 与 Hashtable 集合类似,集合中的元素以键值对的形式存放,不同的是该集合会按照 key 值自动对集合中的元素排序 |
动态数组,最常用的集合,与数组操作方法类似。
与数组不同的是ArrayList可以在指定索引位置添加或一处项目,动态数组会自动调整他的大小。
同样ArrayList也允许在列表中动态内存分配,添加,搜索,排序各项
创建ArrayList对象需要使用该类的构造方法:
构造方法 | 作用 |
---|---|
ArrayList() | 创建实例,集合容量为初始容量 |
ArrayList(ICollection c) | 创建 ArrayList 的实例,该实例包含从指定实例中复制的元素,并且初始容量与复制的元素个数相同 |
ArrayList(int capacity) | 创建 ArrayList 的实例,并设置其初始容量 |
举个栗子:
ArrayList listl=new ArrayList();
ArrayList list2=new ArrayList(listl);
ArrayList list3=new ArrayList(10);
属性或方法 | 作用 |
---|---|
int Add(object value) | 向集合中添加 object 类型的元素,返回元素在集合中的下标 |
void AddRange(ICollection c) | 向集合中添加另一个集合 c |
Capacity | 属性,用于设置或获取集合中可以包含的元素数量 |
void Clear() | 从集合中清除所有元素 |
bool Contains(Object item) | 判断集合中是否含有 item 元素,若含有该元素则返回 True, 否则返回 False |
void CopyTo(Array array) | 从目标数组 array 的第 0 个位置开始,将整个集合中的元素复制到类型兼容的数组 array 中 |
void CopyTo(Array array,int arraylndex) | 从目标数组 array 的指定索引 arraylndex 处,将整个集合中的元素赋值到类型兼容的数组 array 中 |
void CopyTo(int index,Array array,int arrayIndex,int count) | 从目标数组 array 的指定索引 arrayindex 处,将集合中从指定索引 index 开始的 count 个元素复制到类型兼容的数组 array 中 |
Count | 属性,用于获取集合中实际含有的元素个数 |
int IndexOf(object value) | 返回 value 值在集合中第一次出现的位置 |
int IndexOf(object value,int startIndex) | 返回 value 值在集合的 startindex 位置开始第一次出现的位置 |
int IndexOf(object value,int startIndex,int count) | 返回 value 值在集合的 startindex 位置开始 count 个元素中第一次出现的位置 |
int LastIndexOf(object value) | 返回 value 值在集合中最后一次出现的位置 |
int LastIndexOf(object value,int startIndex) | 返回 value 值在集合的 startindex 位置开始最后一次出现的位置 |
int LastIndexOf(object value,int startIndex,int count) | 入元素 value值在集合的 startindex 位置开始 count 个元素中最后一次出现的位置 |
void Insert(int index,object value) | 返回 value 向集合中的指定索引 index 处插 |
void InsertRange(int index,ICollection c) | 向集合中的指定索引 index 处插入一个集合 |
void Remove(object obj) | 将指定兀素 obj 从集合中移除 |
void RemoveAt(int index) | 移除集合中指定位置 index 处的元素 |
void RemoveRange(int index,int count) | 移除集合中从指定位置 index 处的 count 个元素 |
void Reverse() | 将集合中的元素顺序反转 |
void Reverse(int index,int count) | 将集合中从指定位置 index 处的 count 个元素反转 |
void Sort() | 将集合中的元素排序,默认从小到大排序 |
void Sort(IComparer comparer) | 将集合中的元素按照比较器 comparer 的方式排序 |
void Sort(int index,int count,IComparer comparer) | 将集合中的元素从指定位置 index 处的 count 个元素按照比较器 comparer 的方式排序 |
void TrimToSize() | 将集合的大小设置为集合中元素的实际个数 |
队列是一种常见的数据结构之一,是先进先出的一种结构。尾部进,头部出。
常用的构造方法
构造方法 | 作用 |
---|---|
Queue() | 创建队列Queue实例,集合的容量默认32个元素 ,使用默认的增长因子 |
Queue(ICollection col) | 创建 Queue 的实例,该实例包含从指定实例中复制的元素,并且初始容量与复制的元素个数、增长因子相同 |
Queue(int capacity) | 创建 Queue 的实例,并设置其指定的元素个数,默认增长因子 |
Queue(int capacity, float growFactor) | 创建 Queue 的实例,并设置其指定的元素个数和增长因子 |
注:增长因子是指当需要扩大容量时,以当前的容量(capacity)值乘以增长因子(growFactor)的值来自动增加容量。
举个栗子:
//第 1 中构造器
Queue queueq1 = new Queue();
//第 2 中构造器
Queue queueq2 = new Queue(queue1);
//第 3 中构造器
Queue queueq3 = new Queue(30);
//第 4 中构造器
Queue queueq4 = new Queue(30, 2);
Queue常用的属性和方法
属性或方法 | 作用 |
---|---|
Count | 属性,获取 Queue 实例中包含的元素个数 |
void Clear() | 清除 Queue 实例中的元素 |
bool Contains(object obj) | 判断 Queue 实例中是否含有 obj 元素 |
void CopyTo(Array array, int index) | 将 array 数组从指定索引处的元素开始复制到 Queue 实例中 |
object Dequeue() | 移除并返回位于 Queue 实例开始处的对象 |
void Enqueue(object obj) | 将对象添加到 Queue 实例的结尾处 |
object Peek() | 返回位于 Queue 实例开始处的对象但不将其移除 |
object[] ToArray() | 将 Queue 实例中的元素复制到新数组 |
void TrimToSize() | 将容量设置为 Queue 实例中元素的实际数目 |
IEnumerator GetEnumerator() | 回循环访问 Queue 实例的枚举数 |
Stack堆栈是常用的数据结构之一,是先进后出的一种数据机构。
Stack提供的三种构造方法
构造方法 | 作用 |
---|---|
Stack() | 使用初始容量创建 Stack 的对象 |
Stack(ICollection col) | 创建 Stack 的实例,该实例包含从指定实例中复制的元素,并且初始容量与复制的元素个数、增长因子相同 |
Stack(int capacity) | 创建 Stack 的实例,并设置其初始容量 |
Stack常用的属性和方法
属性或方法 | 作用 |
---|---|
Push(object obj) | 向栈中添加元素,也称入栈 |
object Peek() | 用于获取栈顶元素的值,但不移除栈顶元素的值 |
object Pop() | 用于移除栈顶元素的值,并移除栈顶元素 |
Clear() | 从 Stack 中移除所有的元素 |
Contains(object obj) | 判断某个元素是否在 Stack 中 |
object[] ToArray() | 复制 Stack 到一个新的数组中 |
Hashtable 类实现了 IDictionary 接口,集合中的值都是以键值对的形式存取的。
Hashtable 称为哈希表,也称为散列表,在该集合中使用键值对(key/value)的形式存放值。
Hashtable常用构造方法:
Hashtable xxx = new Hashtable();
Hashtable 类中常用的属性和方法
常用的方法和属性 | 作用 |
---|---|
Count | 集合中存放的元素的实际个数 |
void Add(object key,object value) | 向集合中添加元素 |
void Remove(object key) | 根据指定的 key 值移除对应的集合元素 |
void Clear() | 清空集合 |
ContainsKey (object key) | 判断集合中是否包含指定 key 值的元素 |
ContainsValue(object value) | 判断集合中是否包含指定 value 值的元素 |
使用 Hashtable 时能同时存放 key/value 的键值对,由于 key 值是唯一的,因此可以根据指定的 key 值查找 value 值。
结构与方法与Hashtable类似:但是为有序列表,按照 key 值对集合中的元素排序
举个栗子:
SortedList sortedList = new SortedList();
sortedList.Add(3,"q");
sortedList.Add(2,"q");
sortedList.Add(1,"q");
foreach (DictionaryEntry a in sortedList) {
Console.WriteLine(a.Key+"" + a.Value);
}
sortedList.Clear();
sortedList.Add(3, "q");
sortedList.Add(2, "w");
sortedList.Add(4, "e");
foreach (DictionaryEntry a in sortedList)
{
Console.WriteLine(a.Key + "" + a.Value);
}
输出:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。