- 集合
- ArrayList: 升级版本的数组
- 1、可以存储任意的数据类型
- 2、会自动扩容,自动调整索引
- 3、有序集合,存的值是有顺序的
- 4、可以允许存储相同的值
- 5、存值结构--数组结构 通过下标获取值
- 弊端:
- 会频繁的做装箱(添值)拆箱(拿值)操作
- 可以存储任意的数据类型会导致管理混乱
- 新增ArrayList
-
//类对象名和集合对象名都是自取的 //向ArrayList中添加值类型的元素时,会执行装箱处理 ArrayList 集合对象名= new ArrayList(); //实例化类对象 类名 类对象名= new 类名(); 对象名.属性 = 属性值; …… //添加对象到集合 集合对象名.Add(类对象名); //获取集合元素的数目 MessageBox.Show(集合对象名.Count)
- 快捷操作:由一系列元素初始化器构成,包围在“{”和“}”之间,并使用逗号进行分隔,如果要添加多个,用逗号分隔。
-
ArrayList 对象名= new ArrayList() { new 类名(){属性= 属性值.....} };
- 访问ArrayList 单个元素
- (类型) ArrayList [index] //按指定索引(下标)取得对象
- 删除ArrayList的元素:
-
ArrayList 集合名=new ArrayList (); 集合名.Remove(对象名) //删除指定对象名的对象,删除的时候如果没有此信息,就不会删除,但也不会报提示信息 集合名.RemoveAt(index) //删除指定索引的对象,如果下标不存在,会报索引越界错误 集合名.Clear() //清除集合内的所有元素
- Hashtable:哈希表,给每个元素取一个关键字,通过关键字来访问其中的元素,当中的每一个元素都是一个键/值对,它的实例化和以及删除等操作和ArrayList相似,
-
Hashtable 对象名= new Hashtable(); //实例化类对象 类名 类对象名= new 类名(); 对象名.属性 = 属性值; …… //添加对象到哈希表中 对象名.Add(类对象名.属性,类对象名);
- Hashtable和ArrayList的主要区别是什么?
- Hashtable是通过关键字来访问其中的元素,ArrayList是通过索引来访问其中的元素
- 相同点:
- Hashtable和ArrayList存储的数据类型都会被转换为object类型
-
key value -
创建List<T>泛型集合:是ArrayList的进阶版
- List<SE> engineers = new List<SE>();
- 尖括号里面可以放任意数据类型
-
异同点
List<T>
ArrayList
不同点
增加元素时类型严格检查
可以增加任何类型
添加和读取值类型元素时,无需装箱拆箱
添加和读取值类型元素时,需要装箱拆箱
相同点
通过索引访问集合的元素
添加对象方法相同
通过索引删除元素
- 创建Dictionary<Key,Value>集合(字典):是hashtable的进阶版
- <K,V>约束集合中元素类型
- 编译时检查类型约束
- 避免箱(添值)拆箱(拿值)操作,性能高
- 与Hashtable操作类似
-
异同点
Dictionary<K,V>
Hashtable
不同点
增加元素时类型严格检查
可以增加任何类型
无需装箱拆箱
需要装箱拆箱
相同点
通过Key获取Value
添加对象方法相同
遍历方法相同
- 什么是泛型:类型参数<T>,一种不确定的类型参数,默认情况下是object类型
- 泛型的好处:
- 避免箱(添值)拆箱(拿值)操作,性能高
- 提供了更好的类型安全性
- 什么是泛型集合:
- 泛型<T>最常见的用途是创建集合类
- 操作的数据类型被定义为一个参数
- 泛型集合包括List<T>、Dictionary<Key,Value>
- 泛型集合优点:
- 泛型集合可以约束集合内的元素类型
- 访问泛型集合中的元素无须进行类型转换
- 泛型类:与其他类不同的是,其中定义了类型参数
//T指类型参数,代表具体的数据类型,可以是类类型,也可以是基本数据类型
public class 类名<T>
{
//……
}