2021-08-29C#中的集合

本文详细介绍了ArrayList和Queue两种动态数据结构,包括它们的构造方法、常用属性和方法。ArrayList提供了添加、删除、查找和排序等功能,而Queue实现了先进先出(FIFO)的数据管理。此外,还探讨了如何通过实现IComparable<T>接口进行自定义排序,以应用于学生类的比较。
摘要由CSDN通过智能技术生成

动态数组

  1. ArrayList:可以使用索引在指定的位置添加和移除项目,动态数组(底层原理就是数组)会自动重新调整它的大小。
  2. 构造方法:
    • ArrayList() :创建ArrayList的实例,集合的容器是默认初始容量
    • ArrayList(Icollection c): 创建ArrayList的实例,该实例包含从指定实例中复制的元素,并且初始容量与复制的元素个数相同
    • ArrayList(int capacity):创建ArrayList 的实例,并设置其初始容量

注意:在C#语言中提供了集合初始化器,允许在创建集合实例时向集合中添加元素;

ArrayList 类中常用的属性和方法如下表所示:

  1. public int Add(object value) :向集合中添加 object 类型的元素,返回元素在集合中的下标

  1. public void AddRange(ICollection c): 向集合中添加另一个集合 c

  1. Capacity: 属性,用于获取或设置集合中可以包含的元素个数

  1. public void Clear() 从集合中移除所有元素

  1. public bool Contains(object item) 判断集合中是否含有 item 元素,若含有该元素则返回 True, 否则返回 False

  1. public void CopyTo(Array array) 从目标数组 array 的第 0 个位置开始,将整个集合中的元素复制到类型兼容 的数组 array

  1. public void CopyTo(Array array,int arraylndex) 从目标数组 array 的指定索引 arraylndex 处,将整个集合中的元素赋值到类 型兼容的数组 array

  1. public void CopyTo(int index,Array array,int arrayIndex,int count) 从目标数组 array 的指定索引 arrayindex 处,将集合中从指定索引 index 始的 count 个元素复制到类型兼容的数组 array Count 属性,用于获取集合中实际含有的元素个数

  1. public int IndexOf(object value) 返回 value 值在集合中第一次出现的位置

  1. public int IndexOf(object value,int startIndex) 返回 value 值在集合的 startindex 位置开始第一次出现的位置

  1. public int IndexOf(object value,int startIndex,int count) 返回 value 值在集合的 startindex 位置开始 count 个元素中第一次出现的位

  1. public int LastIndexOf(object value) 返回 value 值在集合中最后一次出现的位置

  1. public int LastIndexOf(object value,int startIndex) 返回 value 值在集合的

  1. startindex 位置开始最后一次出现的位置

  1. public int LastIndexOf(object value,int startIndex,int count) 入元素 value值在集合的 startindex 位置开始 count 个元素中最后一次出现 的位置

  1. public void Insert(int index,object value) 返回 value 向集合中的指定索引 index 处插

  1. public void InsertRange(int index,ICollection c) 向集合中的指定索引 index 处插入一个集合

  1. public void Remove(object obj) 将指定兀素 obj 从集合中移除

  1. public void RemoveAt(int index) 移除集合中指定位置 index 处的元素

  1. public void RemoveRange(int index,int count) 移除集合中从指定位置 index 处的 count 个元素

  1. public void Reverse() 将集合中的元素顺序反转

  1. public void Reverse(int index,int count) 将集合中从指定位置 index 处的 count 个元素反转

  1. public void Sort() 将集合中的元素排序,默认从小到大排序

  1. public void Sort(IComparer comparer) 将集合中的元素按照比较器 comparer 的方式排序

  1. public void Sort(int index,int count,IComparer comparer) 将集合中的元素从指定位置 index 处的 count 个元素按照比较器 comparer 的方式排序

  1. public void TrimToSize() 将集合的大小设置为集合中元素的实际个数

Queue

Queue 类的4 个构造方法

  1. Queue() 创建 Queue 的实例,集合的容量是默认初始容量 32 个元素,使用默认的增长因子
  2. Queue(ICollection col) 创建 Queue 的实例,该实例包含从指定实例中复制的元素,并且初始容量与复制的元素 个数、增长因子相同
  3. Queue(int capacity) 创建 Queue 的实例,并设置其指定的元素个数,默认增长因子
  4. Queue(int capacity, float growFactor) 创建 Queue 的实例,并设置其指定的元素个数和增长因子

Queue中的方法:

  1. Count 属性,获取 Queue 实例中包含的元素个数

  1. void Clear() 清除 Queue 实例中的元素

  1. public bool Contains(object obj) 判断 Queue 实例中是否含有 obj 元素

  1. public void CopyTo(Array array, int index) array 数组从指定索引处的元素开始复制到 Queue 实例中 object Dequeue() 移除并返回位于 Queue 实例开始处的对象

  1. public void Enqueue(object obj) 将对象添加到 Queue 实例的结尾处 object Peek() 返回位于 Queue 实例开始处的对象但不将其移除 object[] ToArray() Queue 实例中的元素复制到新数组

  1. public void TrimToSize() 将容量设置为 Queue 实例中元素的实际数目 IEnumerator GetEnumerator() 返回循环访问 Queue 实例的枚举数

关于动态数据的自定义排序问题:

  1. IComparable<T> 接口
    1. 直接在学生类中实现IComparable <T>接口
    2. 学生中重写CompareTo(T obj)方法
    3. 在测试类中使用动态数组中的sort()方法
  2. CompareTo(T obj)
    1. 比较两个对象值 返回值小于0代表当前实例小于比较实例
    2. 返回值等于0代表二者相等。
    3. 返回值大于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;

        }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值