动态数组
- ArrayList:可以使用索引在指定的位置添加和移除项目,动态数组(底层原理就是数组)会自动重新调整它的大小。
- 构造方法:
- ArrayList() :创建ArrayList的实例,集合的容器是默认初始容量
- ArrayList(Icollection c): 创建ArrayList的实例,该实例包含从指定实例中复制的元素,并且初始容量与复制的元素个数相同
- ArrayList(int capacity):创建ArrayList 的实例,并设置其初始容量
注意:在C#语言中提供了集合初始化器,允许在创建集合实例时向集合中添加元素;
ArrayList 类中常用的属性和方法如下表所示:
- public int Add(object value) :向集合中添加 object 类型的元素,返回元素在集合中的下标
- public void AddRange(ICollection c): 向集合中添加另一个集合 c
- Capacity: 属性,用于获取或设置集合中可以包含的元素个数
- public void Clear() 从集合中移除所有元素
- public bool Contains(object item) 判断集合中是否含有 item 元素,若含有该元素则返回 True, 否则返回 False
- public void CopyTo(Array array) 从目标数组 array 的第 0 个位置开始,将整个集合中的元素复制到类型兼容 的数组 array 中
- public void CopyTo(Array array,int arraylndex) 从目标数组 array 的指定索引 arraylndex 处,将整个集合中的元素赋值到类 型兼容的数组 array 中
- public void CopyTo(int index,Array array,int arrayIndex,int count) 从目标数组 array 的指定索引 arrayindex 处,将集合中从指定索引 index 开 始的 count 个元素复制到类型兼容的数组 array 中 Count 属性,用于获取集合中实际含有的元素个数
- public int IndexOf(object value) 返回 value 值在集合中第一次出现的位置
- public int IndexOf(object value,int startIndex) 返回 value 值在集合的 startindex 位置开始第一次出现的位置
- public int IndexOf(object value,int startIndex,int count) 返回 value 值在集合的 startindex 位置开始 count 个元素中第一次出现的位 置
- public int LastIndexOf(object value) 返回 value 值在集合中最后一次出现的位置
- public int LastIndexOf(object value,int startIndex) 返回 value 值在集合的
- startindex 位置开始最后一次出现的位置
- public int LastIndexOf(object value,int startIndex,int count) 入元素 value值在集合的 startindex 位置开始 count 个元素中最后一次出现 的位置
- public void Insert(int index,object value) 返回 value 向集合中的指定索引 index 处插
- public void InsertRange(int index,ICollection c) 向集合中的指定索引 index 处插入一个集合
- public void Remove(object obj) 将指定兀素 obj 从集合中移除
- public void RemoveAt(int index) 移除集合中指定位置 index 处的元素
- public void RemoveRange(int index,int count) 移除集合中从指定位置 index 处的 count 个元素
- public void Reverse() 将集合中的元素顺序反转
- public void Reverse(int index,int count) 将集合中从指定位置 index 处的 count 个元素反转
- public void Sort() 将集合中的元素排序,默认从小到大排序
- public void Sort(IComparer comparer) 将集合中的元素按照比较器 comparer 的方式排序
- public void Sort(int index,int count,IComparer comparer) 将集合中的元素从指定位置 index 处的 count 个元素按照比较器 comparer 的方式排序
- public void TrimToSize() 将集合的大小设置为集合中元素的实际个数
Queue 类
Queue 类的4 个构造方法
- Queue() 创建 Queue 的实例,集合的容量是默认初始容量 32 个元素,使用默认的增长因子
- Queue(ICollection col) 创建 Queue 的实例,该实例包含从指定实例中复制的元素,并且初始容量与复制的元素 个数、增长因子相同
- Queue(int capacity) 创建 Queue 的实例,并设置其指定的元素个数,默认增长因子
- Queue(int capacity, float growFactor) 创建 Queue 的实例,并设置其指定的元素个数和增长因子
Queue中的方法:
- Count 属性,获取 Queue 实例中包含的元素个数
- void Clear() 清除 Queue 实例中的元素
- public bool Contains(object obj) 判断 Queue 实例中是否含有 obj 元素
- public void CopyTo(Array array, int index) 将 array 数组从指定索引处的元素开始复制到 Queue 实例中 object Dequeue() 移除并返回位于 Queue 实例开始处的对象
- public void Enqueue(object obj) 将对象添加到 Queue 实例的结尾处 object Peek() 返回位于 Queue 实例开始处的对象但不将其移除 object[] ToArray() 将 Queue 实例中的元素复制到新数组
- public void TrimToSize() 将容量设置为 Queue 实例中元素的实际数目 IEnumerator GetEnumerator() 返回循环访问 Queue 实例的枚举数
关于动态数据的自定义排序问题:
- IComparable<T> 接口
- 直接在“学生”类中实现IComparable <T>接口
- 在“学生”中重写CompareTo(T obj)方法
- 在测试类中使用动态数组中的sort()方法
- CompareTo(T obj)
- 比较两个对象值 返回值小于0代表当前实例小于比较实例
- 返回值等于0代表二者相等。
- 返回值大于0代表当前实例大于比较实例
class Student:IComparable<Student>
{
private string name;
private int age;
private DateTime date;
public Student(string name,int age, DateTime date)
{
this.name = name;
this.age = age;
this.date = date;
}
public override string ToString()
{
Console.WriteLine("学生姓名:{0},年龄:{1},入学日期:{2}", name, age, date.ToString("yyyy-MM-dd"));
return " ";
}
public int CompareTo(Student other)
{
return this.age - other.age;
}
}