集合和数据结构的基本概念
列表类集合
字典类集合
队列集合类型
堆栈集合类型
散列集合
位集合
System.Collections
对象:列表/链表、位数组、哈希表、队列和堆栈
System.Collections.Generic
定义泛型集合的接口和类
System.Collections.Specialized
包含专用的集合
列表类集合类型基于IList接口,集合中的每个元素都只包含一个值
列表类集合类型包括:
Array
ArrayList集合类型
List集合类型
ArrayList或List
用于构建复杂的数组或列表集合,始终一维
容量可根据需要自动扩充
提供添加、插入或移除某一范围元素的方法
添加、删除、查找、数据排序、拷贝和转换、元素数容量和实际数
ArrayList al = new ArrayList();
al. Add(1);
al. Insert(1,”A”);
al. Remove(3);
al. RemoveAt(2);
……
List
对应于 ArrayList 的泛型类
表示可通过索引访问的对象的强类型列表
该类使用大小可按需动态增加的数组实现 IList泛型接口
提供用于对列表进行搜索、排序和操作的方法
List<string> weekdays = new List<string>();
weekdays. Add("Monday");
……
weekdays. Insert(1, "Tuesday");
LinkedList<int> list = new LinkedList<int>(); //创建双向链表
list.AddFirst(0); list.AddLast(8);
LinkedListNode<int> lln1 = new LinkedListNode<int>(1); //创建节点
LinkedListNode<int> lln2 = new LinkedListNode<int>(2); //创建节点
list.AddFirst(lln1); list.AddLast(lln2);
list.AddBefore(list.Last, 33); list.AddAfter(list.Last, 25);
LinkedListNode<int> mark1 = list.Find(8); //查找节点
list.AddBefore(mark1, 11);
LinkedListNode<int> node = list.First; //输出列表内容
基于IDictionary/IDictionary
集合中的每个元素都包含键/值对
Hashtable集合类型
Dictionary 集合类型
SortedList集合类型
SortedList
SortedDictionary
键/值(key/value)对的集合,根据键的哈希代码进行组织
key和value键值均为object类型
每个键(key)必须是唯一的
添加后键(key)就不能更改
键(key)不能为 null 引用,但值(value)可以
键/值(key/value)对的集合,按键排序,可按键和索引访问
集合中的每个元素都是一个可作为DictionaryEntry对象进行访问的键/值对
添加和移除元素时,元素会按正确的排序顺序插入或移除,同时索引也进行相应的调整
泛型类,表示键/值(key/value)对的集合
以基于键的排序顺序维护元素,并可按照键和索引访问
提供了从一组键到一组值的映射
每个元素都是一个KeyValuePair
元素对象查找的方法Contains、ContainsKey、ContainsValue、IndexOfKey和IndexOfValue
对象设置和获取的方法GetByIndex、GetKey、GetKeyList、GetValueList和SetByIndex
SortedList
SortedDictionary
SortedList list = new SortedList(); //创建List实例对象
list.Add(5, "Friday");
list.Remove(7); //使用Remove方法删除索引7位置的元素
list.RemoveAt(5); ……
SortedList<string, string> list = new SortedList<string, string>();
list.Add("txt", "notepad.exe"); ……
SortedDictionary<string, string> list = new SortedDictionary<string, string>();
list.Add("txt", "notepad.exe"); ……
Queue类和Queue泛型类表示对象的先进先出集合
存储在Queue中的对象在一端(Queue 的结尾处)插入,从另一端(Queue的开始处)移除
Stack类和Stack泛型类表示对象的简单的后进先出非泛型集合
Stack采用循环缓冲区方式实现对象的增删
UnionWith(并集)
IntersectWith(交集)
ExceptWith(差集)
SymmetricExceptWith(对称差集)
IsProperSubsetOf、IsProperSupersetOf、IsSubsetOf、IsSupersetOf、Overlaps和SetEquals
元素为位标志的集合,其元素都是一位,而不是一个对象
NameValueCollection、StringDictionary和 StringCollection 等特殊用途的集合