- 学习知识点
- 初始化器
- ArrayList(数组列表) 和 Hashtable(字典集合)
- List<T>(泛型列表) 和 Dictionary<K , V>(泛型字典集合)
- Queue(队列)、Stack(栈)和SortedList(排序列表)【不讲】
- 基本简介
基本概念:用于存储多个数据,且自动变化最大个数,还要便于维护的存储方式
集合被定义在System.Collections命名空间
- 初始化器
在Framework3.0版本推出了新的特性:初始化器,它由一系列元素初始化器构成,包围在“{”和“}”之间,并使用逗号进行分隔,用于简化对象和集合的初始化代码。
通过集合初始化器,无需在代码中指定多个对该类Add()方法的调用,编译器会添加这些调用,节省了我们很多的编码工作
当然,集合初始化器也可以将null作为集合元素
例如:
ArrayList engineers = new ArrayList() { new SE(){Name = "何小马",Age = 26, Gender = Gender.male,ID = "000",Popularity = 10}, new SE(){Name = "何小豚",Age = 22, Gender = Gender.female,ID = "111",Popularity = 20}, new SE(){Name = "凹凸曼",Age = 30, Gender = Gender.male,ID = "222",Popularity = 20} }; |
- ArrayList 和 HashTable
ArrayList 和 HashTable的相同点是可以存储任何对象数据,也就是在存储对象前会自动将数据转化成Object类型数据,但在访问时必须从object转换回存储前的类型。
-
- Array List(数组列表)
ArrayList类似于数组,其大小可根据需要动态改变,也可称之为动态数组
属性名 | 功能说明 |
Capacity | 获取或设置ArrayList可包含的元素个数 |
Count | 获取ArrayList实际包含的元素个数 |
方法名 | 功能说明 |
Add(object obj) | 将元素添加到ArrayList结尾处 |
Insert(int index,object obj) | 将元素添加到ArrayList的指定索引处 |
Remove(object obj) | 移除ArrayList指定的元素 |
RemoveAt(int index) | 移除ArrayList指定索引处元素 |
Clear() | 清除ArrayList中所有元素 |
Sort() | 对ArrayList中的元素排序 |
Reverse() | 将ArrayList中的元素顺序反转 |
TrimToSize() | 将ArrayList容量数设置为实际元素个数 |
-
- Hashtable(字典集合)
字典集合是用于处理key/value(键/值)对的集合容器
key通常用于快速查找Value数据,因此每一个Key值必须在当前集合中不与其它Key值重复
value用于存储对应于key的值
Hashtable中的元素不需要按顺序存储和访问,所以在常用操作中没有ArrayList中的Insert和RemoveAt等与元素存储位置有关的方法。
- List<T> 和 Dictionary<K , V>
对上述集中集合进行遍历时,因为集合中存在不同类型的对象,在类型转换时存在出错的风险,同时类型转换也降低了程序性能。因此在Framework2.0中添加了新的特性:泛型
泛型引入了类型参数(Type Parameter)的概念,通过定义类型参数(T 或者 K,V)限定了集合、类、方法处理的具体类型,从而降低类型转换错误的风险,也提高了程序运行的性能。因此成为最常见的集合方式。
- 泛型<T>最常见的用途是创建集合类
- 泛型集合可以约束集合内的元素类型
- 典型泛型集合List<T>、Dictionary<K,V>,<T>、<K,V>表示该泛型集合中的元素类型
优势:
- 实现代码重用,未来的主流技术
- 性能高,避免繁琐的装箱拆箱
- 提供了更好的类型安全性
- CLR支持泛型
- List(泛型列表)
命名空间:System.Collections.Generic
创建List<T>泛型集合的方式
List<数据类型> 集合名称 = new List<数据类型>();
例如:
List<SE> engineers = new List<SE>();
遍历List<T>泛型集合的方式
foreach (SE se in engineers)
{
MessageBox.Show(se.SayHi());
}
其属性和方法同Array List基本一致,这里不再赘述。
-
- Dictionary<K , V>(泛型字典集合)
- Dictionary<K,V>通常称为字典
- <K,V>约束集合中元素类型
- 编译时检查类型约束
- 无需装箱拆箱操作
- 与Hashtable操作类似