集合概念:
集合本质上是一个动态数组
2.命令引用:using system.collections 2.1 Arratlist 属性(count) 数量 、属性2(capactity) 有几个位子 //集合里包括属性和方法2.2 arratlist list =new arraylist(); list.add(欲添加的值) object 类型的 为什么这里可以使object 类型的? 是因为object 是所有类型的父类,父类引用指向子类对象 所有类型都可以放在集合中去。2.3 集合与数组不同之处在于数组的元素一旦定死则无法变动,而集合更加灵活的原理在于,一旦超出数组的位置之后,先创建一个比原数组的大于原数组的长度的四个元素的新元素、将旧数组的元素值赋予新数组的之后将原旧数组销毁,并且将新的元素填满。注,比如用add加入了大于四个元素的位置,它就会显示8个。
public class Class1
{public object[] Array { get; set; } //封装一个class 1 的集合
public int Count { get; set; } 定义属性 public Class1() {
Array = new object[4]; // 无参的构造函数创建一个旧的数组
}public void add(object o)
{ if (Array.Length == Count) //传递一个有参的参数 并且如果元素已满 { 创建一个新的数组+4 并且将新的引用指向旧的数组引用object[] a = new object[Array.Length + 4];
Array = a;}
Count++;
}}
} ArrayList: 属性和方法Add(object o) 添加元素AddRange() 添加范围二 new 对象的时候 对象的引用指向集合中的元素位置 存的只是引用地址 如果打印的话,那么只会打出类名
注:打印一个输出一个对象实际上是调用该对象的tostring 方法()如果要打印对象的信息、那就必须要重写。因为object 父类中是虚方法。2.移除元素
Remove (object o)根据值来删除删除对象的时候,由于集合里面存放的是引用地址,而引用地址又是原来的地址,删除时虽然填入的是相同的值,但是实际上在删除查找的时候并没有找到这个地址,所以删除不了如果要删除,则定义一个变量,利用这个变量来删除循环删除的元素,删除了第0个值,之后循环+1 数组长度-1 原来的1值变成第0值,而循环的数为1,则删第1个数,而不是删除第0个数值。RemoveAT (int index) 根据提供的下标删除指定的元素 //第几个元素
List<T> 泛型
T 是类型参数 使用时由使用者来指定
对比:Arravlist 的优点:什么都能放、非常的灵活
缺点:
1.类型不安全2.操作台麻烦3.效率太低2.装箱与拆箱
将基本类型转成object 装箱操作
将object 类型还原成基本类型 拆箱操作list<T>和Arraylist 操作方法没有任何区别
4.枚举类型
enum Color{ Red, Green, Blue}