C#使用系统自带的List集合实现内容排序、获取最大、最小值

一、List<T> 中T为封装内容的排序

①编写学生类、

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DelegateAndEvent
{
    class Student
    {
        //字段:名字
        public string name;

        //字段:年龄
        public int age;

        //字段:分数
        public int score;



        //构造函数
        public Student(string externName,int externAge,int externScore)
        {
            this.name = externName;
            this.age = externAge;
            this.score = externScore;
        }


        //方法:自我介绍
        public void SelfIntroduce()
        {
            Console.WriteLine("姓名:{0},年龄:{1},分数:{2}",this.name,this.age,this.score);
        }


        //方法:比较两个学生的年龄
        public static int AgeCompare(Student firsStudent,Student scondStudent)
        {
            return firsStudent.age - scondStudent.age;
        }

        //方法:比较两个学生的分数
        public static int ScoreCompare(Student firsStudent, Student scondStudent)
        {
            return firsStudent.score - scondStudent.score;
        }


    }//Class_end
}

②测试排序方法(实现方法1)

        //排序测试
        static void ListSortTest()
        {

            Student student1 = new Student("叶修", 21, 69);
            Student student2 = new Student("王维", 18, 72);
            Student student3 = new Student("张宇", 23, 80);
            Student student4 = new Student("建国", 26, 88);
            Student student5 = new Student("华夏", 18, 99);

            List<Student> students = new List<Student>();
            students.Add(student1);
            students.Add(student2);
            students.Add(student3);
            students.Add(student4);
            students.Add(student5);

            //从小到大排序(升序)
            students = students.OrderBy(tt=>(tt.age)).ToList();
            从大到小排序(降序)
            //students.Reverse();

            Student min = students.First();
            Student max = students.Last();
            foreach (var item in students)
            {
                Console.WriteLine("姓名:{0},年龄:{1},成绩:       {2}",item.name,item.age,item.score);
            }
            Console.WriteLine("最小年龄:{0},最大年龄:{1}",min.age,max.age);
         }

③输出结果

 ④测试排序方法(实现方法2)

 static void ListSortTest()
        {

            Student student1 = new Student("叶修", 21, 69);
            Student student2 = new Student("王维", 18, 72);
            Student student3 = new Student("张宇", 23, 80);
            Student student4 = new Student("建国", 26, 88);
            Student student5 = new Student("华夏", 18, 99);

            List<Student> students = new List<Student>();
            students.Add(student1);
            students.Add(student2);
            students.Add(student3);
            students.Add(student4);
            students.Add(student5);

            //从小到大排序(升序)
            //students = students.OrderBy(tt=>(tt.age)).ToList();
            从大到小排序(降序)
            //students.Reverse();

            //从小到大排序(升序)
            students.Sort(Student.AgeCompare);
            从大到小排序(降序)
            //students.Reverse();

            Student min = students.First();
            Student max = students.Last();
            foreach (var item in students)
            {
                Console.WriteLine("姓名:{0},年龄:{1},成绩:{2}",item.name,item.age,item.score);
            }
            Console.WriteLine("最小年龄:{0},最大年龄:{1}",min.age,max.age);
        }

⑤输出结果

 

二、List<T> 中T为数据类型的排序

①测试排序方法

        //排序测试
        static void ListSortTest()
        {

            List<int> listNumTest = new List<int>(){14,21,16,35,17,54,84,156,78,16};


            //排序(升序)
            listNumTest.Sort(CompareFunc);
            
            int min1 = listNumTest.First();
            int max1 = listNumTest.Last();

            foreach (var item in listNumTest)
            {
                Console.WriteLine("值:{0}", item);
            }
            Console.WriteLine("最小值:{0},最大值:{1}", min1, max1);

            //反转排序(降序)
            listNumTest.Reverse();
            int max2 = listNumTest.First();
            int min2 = listNumTest.Last();
            foreach (var item in listNumTest)
            {
                Console.WriteLine("值:{0}", item);
            }
            Console.WriteLine("最小值:{0},最大值:{1}", min2, max);
        }

②输出结果

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛奶咖啡13

我们一起来让这个世界有趣一点…

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值