C# 泛型集合类List使用总结

C# 泛型集合类List使用总结

目录

  1. 介绍
  2. 创建List
  3. 添加元素
  4. 删除元素
  5. 查询元素
  6. 遍历List
  7. List的排序
  8. 示例1:统计字符串中单词出现次数
  9. 示例2:实现学生信息管理系统

1. 介绍

C#中的List是一个泛型集合类,可以储存任意类型的数据,它类似于C++ STL中的vector。List的数据结构是动态数组,支持快速访问和线性遍历。与Array相比,List的长度是可以动态调整的,使用更加灵活。

2. 创建List

List的创建需要指定类型,例如:

List<int> intList = new List<int>();
List<string> strList = new List<string>();

上述代码创建了两个空List,一个储存int类型的元素,一个储存string类型的元素。如果需要在创建时添加元素,可以使用集合初始化器:

List<int> intList = new List<int>{1,2,3};
List<string> strList = new List<string>{"hello","world"};

3. 添加元素

List的元素可以使用Add方法添加到末尾,也可以使用Insert方法插入到指定的位置:

List<int> intList = new List<int>();
intList.Add(1);
intList.Add(2);
intList.Insert(1,3); // 将3插入到索引为1的位置

4. 删除元素

List的元素可以使用Remove方法删除,也可以使用RemoveAt方法删除指定位置的元素:

List<int> intList = new List<int>{1,2,3};
intList.Remove(2);    // 删除值为2的元素
intList.RemoveAt(0);  // 删除索引为0的元素

5. 查询元素

List的元素可以使用索引访问,也可以使用Contains方法判断是否包含指定元素:

List<int> intList = new List<int>{1,2,3};
Console.WriteLine(intList[0]);
Console.WriteLine(intList.Contains(2)); // true

6. 遍历List

List的元素可以使用foreach遍历,也可以使用for循环访问:

List<int> intList = new List<int>{1,2,3};
foreach(int i in intList){
    Console.WriteLine(i);
}
for(int i=0; i<intList.Count; i++){
    Console.WriteLine(intList[i]);
}

7. List的排序

List的元素可以使用Sort方法排序,默认是按照元素值的大小升序排序:

List<int> intList = new List<int>{3,1,2};
intList.Sort(); // 升序排序
foreach(int i in intList){
    Console.WriteLine(i);
}

也可以使用自定义比较器定义排序规则,以降序排序为例:

List<int> intList = new List<int>{3,1,2};
intList.Sort((x,y) => y.CompareTo(x)); // 降序排序
foreach(int i in intList){
    Console.WriteLine(i);
}

8. 示例1:统计字符串中单词出现次数

需求:给定一段英文句子,统计其中每个单词的出现次数。

代码示例:

string sentence = "The quick brown fox jumps over the lazy dog";
string[] words = sentence.Split(' ');

List<string> wordList = new List<string>();
foreach(string word in words){
    if(wordList.Contains(word)){
        continue;
    }else{
        wordList.Add(word);
    }
}

foreach(string s in wordList){
    Console.WriteLine(s + ": " + words.Count(w => w==s));
}

运行结果:

The: 1
quick: 1
brown: 1
fox: 1
jumps: 1
over: 1
the: 1
lazy: 1
dog: 1

9. 示例2:实现学生信息管理系统

需求:实现一个简单的学生信息管理系统,包含添加、删除、查询、修改等功能。

代码示例:

class Program
{
    static List<Student> studentList = new List<Student>();

    static void Main(string[] args)
    {
        while(true){
            Console.WriteLine("1. 添加学生信息");
            Console.WriteLine("2. 删除学生信息");
            Console.WriteLine("3. 查询学生信息");
            Console.WriteLine("4. 修改学生信息");
            Console.Write("请选择:");
            string choice = Console.ReadLine();
            switch(choice){
                case "1":
                    AddStudent();
                    break;
                case "2":
                    DeleteStudent();
                    break;
                case "3":
                    QueryStudent();
                    break;
                case "4":
                    ModifyStudent();
                    break;
                default:
                    Console.WriteLine("无效的选择");
                    break;
            }
        }
    }

    static void AddStudent(){
        Console.Write("请输入学生姓名:");
        string name = Console.ReadLine();
        Console.Write("请输入学生年龄:");
        int age = int.Parse(Console.ReadLine());
        Console.Write("请输入学生性别(M/F):");
        string genderStr = Console.ReadLine();
        Gender gender = genderStr=="F"?Gender.Female:Gender.Male;
        Student newStudent = new Student(name,age,gender);
        studentList.Add(newStudent);
        Console.WriteLine("学生添加成功。");
    }

    static void DeleteStudent(){
        Console.Write("请输入学生姓名:");
        string name = Console.ReadLine();
        Student studentToDelete = studentList.Find(s => s.Name==name);
        if(studentToDelete==null){
            Console.WriteLine("未找到该学生。");
        }else{
            studentList.Remove(studentToDelete);
            Console.WriteLine("学生删除成功。");
        }
    }

    static void QueryStudent(){
        Console.Write("请输入学生姓名:");
        string name = Console.ReadLine();
        List<Student> results = studentList.FindAll(s => s.Name==name);
        if(results.Count==0){
            Console.WriteLine("未找到该学生。");
        }else{
            foreach(Student s in results){
                Console.WriteLine(s.ToString());
            }
        }
    }

    static void ModifyStudent(){
        Console.Write("请输入学生姓名:");
        string name = Console.ReadLine();
        Student studentToModify = studentList.Find(s => s.Name==name);
        if(studentToModify==null){
            Console.WriteLine("未找到该学生。");
        }else{
            Console.Write("请输入学生新年龄:");
            int newAge = int.Parse(Console.ReadLine());
            Console.Write("请输入学生新性别(M/F):");
            string genderStr = Console.ReadLine();
            Gender newGender = genderStr=="F"?Gender.Female:Gender.Male;
            studentToModify.Age = newAge;
            studentToModify.Gender = newGender;
            Console.WriteLine("学生信息修改成功。");
        }
    }
}

class Student{
    public string Name {get;set;}
    public int Age {get;set;}
    public Gender Gender {get;set;}

    public Student(string name, int age, Gender gender){
        Name = name;
        Age = age;
        Gender = gender;
    }

    public override string ToString(){
        return $"姓名:{Name} 年龄:{Age} 性别:{Gender}";
    }
}

enum Gender{
    Male,
    Female
}

运行结果:

1. 添加学生信息
2. 删除学生信息
3. 查询学生信息
4. 修改学生信息
请选择:1
请输入学生姓名:张三
请输入学生年龄:20
请输入学生性别(M/F):M
学生添加成功。
1. 添加学生信息
2. 删除学生信息
3. 查询学生信息
4. 修改学生信息
请选择:3
请输入学生姓名:张三
姓名:张三 年龄:20 性别:Male
1. 添加学生信息
2. 删除学生信息
3. 查询学生信息
4. 修改学生信息
请选择:4
请输入学生姓名:张三
请输入学生新年龄:21
请输入学生新性别(M/F):M
学生信息修改成功。
1. 添加学生信息
2. 删除学生信息
3. 查询学生信息
4. 修改学生信息
请选择:3
请输入学生姓名:张三
姓名:张三 年龄:21 性别:Male
1. 添加学生信息
2. 删除学生信息
3. 查询学生信息
4. 修改学生信息
请选择:2
请输入学生姓名:张三
学生删除成功。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 泛型集合类List使用总结 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#生成带注释的dll并引用实现

    生成带注释的dll并引用实现的完整攻略如下: 1. 创建Class Library项目 首先,我们需要在Visual Studio中创建一个Class Library项目,命名为”MyLibrary”(或其他你希望名字)。 2. 编写代码并添加注释 编写一个简单的类,并为类、属性和方法添加注释。代码如下: /// <summary> /// My…

    C# 2023年6月7日
    00
  • 在.NET Core使用 HttpClient 的正确方式

    前言 HttpClient 是 .NET Framework、.NET Core 或 .NET 5以上版本中的一个类,用于向 Web API 发送 HTTP 请求并接收响应。它提供了一些简单易用的方法,如 GET、POST、PUT 和 DELETE,可以很容易地构造和发送 HTTP 请求,并处理响应数据。它是我们比较常用的官方HTTP请求组件,那么你们都正确…

    C# 2023年4月17日
    00
  • 常用的在数据库中建立无限级树形菜单的asp.net代码

    建立无限级树形菜单是Web开发的常见需求之一。在ASP.NET框架下,我们可以使用数据库的递归查询,加上C#语言的代码逻辑来实现这个功能。下面是需要遵循的步骤和示例说明: 第一步:建立数据库表 应该建立一个名为Menus的表,包含以下字段: Id(菜单ID,主键,自增) Name(菜单名,varchar类型) ParentId(父菜单ID,int类型) 字段…

    C# 2023年5月31日
    00
  • C#中for循环、while循环循环执行的方法

    C#中的for循环和while循环是常用的循环结构,用于重复执行相同或类似的代码块,下面是它们的详细讲解和示例说明: for循环 for循环是一种经典的循环语句,用于重复执行一段代码,可以控制循环变量的初始值、终止条件和每次循环变量的增量。for循环的语法如下: for (初始化表达式; 循环条件; 迭代语句) { // 循环体语句 } 其中,初始化表达式只…

    C# 2023年6月7日
    00
  • Coolite配置 管理软件开发历程之

    Coolite配置管理软件开发历程 Coolite是一个ASP.NET AJAX框架,其最大的特点就是提供了一套非常丰富的扩展控件。在使用过程中,可以通过改变配置项,来控制控件的行为。本文主要介绍如何通过Coolite配置来管理深度定制开发过程中的控件行为。 菜单控件的配置 首先,我们来看看菜单控件的配置。在Coolite中,我们可以通过配置来控制菜单控件的…

    C# 2023年6月3日
    00
  • ASP.NET Core 2.0 WebApi全局配置及日志实例

    ASP.NET Core 2.0 WebApi全局配置及日志实例 在 ASP.NET Core 2.0 WebApi 中,可以使用全局配置和日志来提高应用程序的可维护性和可扩展性。以下是 ASP.NET Core 2.0 WebApi 全局配置及日志实例的完整攻略: 步骤一:全局配置 在 ASP.NET Core 2.0 WebApi 中,可以使用 apps…

    C# 2023年5月17日
    00
  • C#中数组段用法实例分析

    C#中数组段用法实例分析 什么是数组段? 在C#中,数组段也称为“范围”,是指从数组的某个索引开始到另一个索引结束的一部分区域。数组段可以用于访问数组的子集,而不需要复制整个数组。 数组段的语法 数组段的语法为:array[startIndex..endIndex]。 其中startIndex是指数组段的起始索引,endIndex是指数组段的结束索引。在这个…

    C# 2023年6月7日
    00
  • C#从DataTable获取数据的方法

    下面我们来详细讲解一下“C#从DataTable中获取数据的方法”的完整攻略,包括以下几个内容: DataTable 简介 从 DataTable 中获取数据的方法 代码示例说明 1. DataTable 简介 DataTable 是 System.Data 命名空间中的一个类,代表一个内存中的数据表格,其中包含了行和列等各种数据信息,可用于存储和处理数据。…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部