C#数据结构之泛型集合类List<T>

摘要:浅谈泛型集合类List<T>的概念和用法。

编程语言:C#

编程环境:Visual Studio 2019

目录

概念

List初始化

List常用属性

List常用方法

增删类

查找类

其他

List的遍历

小结

每篇寄语


概念

        List<T>泛型集合类位于System.Collections.Generic命名空间下,通过对对象进行封装可以实现强类型集合。T就是索要使用的类型,它可以是简单类型(int、string、bool等),也可以是用户自定义类型,或者结构体。不同于普通数组,泛型集合可以自动按需动态调整集合的大小。List<T>在C#编程中作用灵活,使用广泛,是必须要掌握的数据结构之一。

List<T>初始化

        分别以简单类型和用户自定义类型为例,讲述泛型集合List<T>的初始化。用户自定义类型如下:

 //用户自定义类型Students(学生)
    public class Students
    {
        public string Name;//学生姓名
        public int Score;//学生成绩
    }

        首先是创建空集合:

List<int> intlist = new List<int>();//创建普通类型int泛型空集合
List<Students> students = new List<Students>();//创建用户自定义类型Students泛型空集合

        如何赋初值呢?如同初始化数组一样,在new语句的括号后插入大括号{},输入相应的初值即可对List<T>赋初值,如下:

List<int> intList1 = new List<int>() { 0, 1, 2, 3, 5 };//创建带有初值的普通类型int泛型集合
List<Students> students1 = new List<Students>()
{
    new Students{Name="张三",Score=90},
    new Students{Name="李四",Score=91}
};//创建带有初值的用户自定义类型Students泛型集合

List<T>常用属性

  • Capacity:用于获取或设置(可读可写)当前List的容量。当数量超过容量时,这个值会自动增长。(注:所以List<T>的优点之一就是不会超限,同时带来的缺点就是容易冗余分配容量,可通过设置这个值来减少容量)
  • Count:获取(只读)集合中元素数量。
  • this[index]:获取或设置(可读可写)索引值index处的元素。(注:与数组索引访问方式相同)

List<T>常用方法

增删类

  • Add(item):将单个同类对象添加到集合的结尾处,用法如下:
List<Students> students2 = new List<Students>();//创建用户自定义类型Students泛型空集合
Students student3 = new Students();//新建一名学生对象
student3.Name = "王麻子";//赋姓名
student3.Score = 94;//赋分数
students2.Add(student3);//将其添加至集合结尾
  • AddRange(items):将同类对象集合添加至集合的结尾处,用法如下:(注:添加的同类对象集合不仅可以是List<T>集合,也可以是数组)
List<int> intList2 = new List<int>() { 4 };//创建带有初值的普通类型int泛型集合
List<int> intList3 = new List<int>() { 0, 1, 2, 3, 5 };//创建带有初值的普通类型int泛型集合
int[] intArray1 = new int[3] { 3, 6, 9 };//创建带有初值的int型数组
intList2.AddRange(intList3);//将集合intList3添加至intList2结尾处
intList2.AddRange(intArray1);//将数组intArray1添加至intList2结尾处
  • Insert(index,item):将单个同类对象插入指定索引index处。
  • InsertRange(index,items):将同类对象集合插入指定索引index处。(注:添加的同类对象集合不仅可以是List<T>集合,也可以是数组)
  • Remove(item):移除集合中对象item的第一个匹配项,匹配顺序为索引从小到大,匹配成功即移除对象,并返回true,若匹配不成功,则集合里没有等于item的元素,返回false。(注:值得注意的是,若集合里有多个这样的item,则只会移除索引号最小的那一个)
List<int> intList4 = new List<int>() { 0, 1, 2, 3, 0 };//创建带有初值的普通类型int泛型集合
intList4.Remove(0);//执行此语句将会移除集合intList4的索引号等于0处的0
  • RemoveAt(index):移除集合中index索引对应的元素。
  • RemoveRange(index,count):从集合index索引开始数起,删除它后面count个元素。(注:包含index索引对应的元素自身)
List<int> intList5 = new List<int>() { 0, 1, 2, 3, 0 };//创建带有初值的普通类型int泛型集合
intList5.RemoveRange(1, 2);//执行此语句intList5变为{0,3,0}
  • Clear():移除集合中所有元素。(注:相应的容量也会自动清零)

查找类

  • Contains(item):判断元素item是否在集合中,存在返回true,不存在返回false,用于条件判断。
  • IndexOf(item):返回集合中对象item的第一个匹配项的索引号,匹配顺序为索引从小到大,匹配失败返回-1。
  • LastIndexOf:返回集合中对象item的第一个匹配项的索引号,匹配顺序为索引从大到小,匹配失败返回-1。

其他

  • CopyTo(Array):从目标数组的开头开始,将整个集合复制到兼容的一维数组里。(注:它会覆盖掉目标数组里原有的元素)
  • Reverse():将集合里元素的顺序反转,即倒序。
  • ToArray():将集合复制到新的数组中,返回这个数组。
  • TrimExcess():将集合容量设置为集合元素实际数目。

List<T>的遍历

        对于List<T>的遍历可用for循环,也可用foreach循环,后者使用更多,遍历基本语法为

List<int> intList6 = new List<int>() { 0, 1, 2, 3, 0 };//创建带有初值的普通类型int泛型集合
foreach(int i in intList6)
{
    //foreach遍历,无需考虑遍历长度,遍历长度自适应,遍历规则只能从前往后,i为遍历对象
}
for(int i = 0; i < intList6.Count; i++)
{
    //for遍历,需考虑遍历长度,遍历规则可设置,intList6[i]为对象
}

小结

        本文简单讲述了List<T>泛型集合的初始化、属性、方法和遍历,对于它的使用还有很多,比如很多方法(本文未列举)都用到了lambda表达式进行运算,这也是非常重要的,小编现在对于那一块还没吃透,以后会专门讲lambda表达式的用法。

每篇寄语

        前方的路是迷惘的,但脚下的路却是真实的,只有一步一个脚印,把路踩在脚下朝前走,总不会让你失望的。

猜你喜欢

转载自blog.csdn.net/lucgh/article/details/130276124