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日

相关文章

  • 如何在ASP.NET Core应用程序运行Vue并且部署在IIS上详解

    如何在ASP.NET Core应用程序运行Vue并且部署在IIS上详解 在ASP.NET Core应用程序中运行Vue,可以使用Vue CLI创建Vue项目,并将Vue项目集成到ASP.NET Core应用程序中。在部署到IIS上时,需要将Vue项目打包为静态文件,并将其部署到IIS的静态文件目录中。 以下是在ASP.NET Core应用程序中运行Vue并部…

    C# 2023年5月16日
    00
  • asp.net core服务限制堆内存大小的操作方法

    以下是“ASP.NET Core服务限制堆内存大小的操作方法”的完整攻略: 什么是ASP.NET Core服务限制堆内存大小 .NET Core服务限制堆内存大小是一种机制,允许您限制ASP.NET Core应用程序使用的堆内存大小。这种机制可以帮助您优化应用程序的性能,并避免内存泄漏。 ASP.NET Core服务限制堆内存大小的操作方法 ASP.NET …

    C# 2023年5月12日
    00
  • 完整版的Windows Vista系统开机加速全攻略

    下面是关于“完整版的WindowsVista系统开机加速全攻略”的完整攻略,包含两个示例。 1. Windows Vista系统开机加速简介 Windows Vista是微软公司推出的一款操作系统,它的启动速度相对较慢。为了加快Windows Vista系统的启动速度,我们可以采取一些措施来优化系统。 2. Windows Vista系统开机加速全攻略 以下…

    C# 2023年5月15日
    00
  • 详解ASP.NET Core高性能服务器HTTP.SYS

    详解ASP.NET Core高性能服务器HTTP.SYS攻略 在ASP.NET Core应用程序中,HTTP.SYS是一种高性能的服务器,可用于处理HTTP请求。本攻略将介绍如何在ASP.NET Core应用程序中使用HTTP.SYS服务器。 步骤 以下是使用HTTP.SYS服务器的步骤: 安装HTTP.SYS服务器。 在Windows操作系统中,HTTP.…

    C# 2023年5月17日
    00
  • C#实现实体类与字符串互相转换的方法

    讲解C#实现实体类与字符串互相转换的方法,可以使用JSON格式进行转换。 1. JSON序列化和反序列化 1.1 JSON序列化 JSON序列化是将C#对象序列化为JSON格式的字符串的过程,主要使用JSON.NET库的JsonConvert.SerializeObject()方法来完成,示例如下: using Newtonsoft.Json; public…

    C# 2023年5月31日
    00
  • C# String字符串案例详解

    C# String字符串案例详解 在C#编程中,字符串常常是我们经常需要处理的数据类型之一。因此,对于string类型的操作和处理,是我们编程学习的重中之重。本文将带大家详细了解C# String字符串的应用实例及操作技巧。 1. 字符串的定义及基本操作 在C#中,String字符串是一种不可变的类型,即被创建之后,它的值就不能被修改了。以下是一些定义字符串…

    C# 2023年5月31日
    00
  • .Net设计模式之单例模式(Singleton)

    .Net设计模式之单例模式(Singleton) 什么是单例模式? 在软件系统中,有些类只需要存在唯一的一个实例对象,比如系统中的窗口管理器、文件系统、计时器等,这些对象在系统中只允许存在一个实例。单例模式就是为了满足这类需求而生的一种设计模式。 单例模式是指在整个应用程序中只能有一个实例对象的类。通常情况下,单例模式是指全局社区共享的一个唯一对象实例,比如…

    C# 2023年5月31日
    00
  • C# WINFORM自定义异常处理方法

    下面就为您详细讲解“C# WINFORM自定义异常处理方法”的完整攻略。 什么是异常处理? 首先,我们需要理解什么是异常处理。在编写程序时,有些运行时错误是可以预见的,比如除数为零、数组下标越界、文件不存在等。当这些错误出现时,我们需要给用户一个合理的提示,让用户理解并修复这些问题。这就是异常处理。 在C#中,异常处理通常使用try-catch代码块来完成。…

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