C# 泛型List排序的实现

news2024/12/27 12:26:50

本文主要介绍了C# 泛型List排序的实现,分享给大家,具体如下:

代码

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace L_List_sort

{

    public class Person:IComparable<Person>

    {

        // 属性

        public string name;

        public int age;

        // 构造

        public Person(string name, int age)

        {

            this.name = name;

            this.age = age;

        }

        // 重写字符串

        public override string ToString()

        {

            return "name: " + this.name + "  age: " + this.age;

        }

        // 实现比较接口

        public int CompareTo(Person other)

        {

            // 根据返回值排序  升序

            if (this.age > other.age)

            {   // 大于0 放后面

                return 1;

            }

            else

            {   // 小于 0 放前面

                return -1;

            }

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("泛型数组的排序");

            #region 知识一 List自带排序方法

            Console.WriteLine("--------------------List自带排序方法");

            List<int> listInt = new List<int>();

            listInt.Add(4);

            listInt.Add(2);

            listInt.Add(3);

            listInt.Add(1);

            Console.WriteLine("-------排序前");

            PrintList<int>(listInt);

            Console.WriteLine("-------排序后");

            // 排序

            listInt.Sort();

            PrintList<int>(listInt);

            #endregion

            #region 知识二 自定义类的排序

            Console.WriteLine("--------------------自定义类的排序");

            List<Person> listPerson = new List<Person>();

            listPerson.Add(new Person("张三", 20));

            listPerson.Add(new Person("李四", 18));

            listPerson.Add(new Person("王五", 31));

            listPerson.Add(new Person("曹操", 45));

            Console.WriteLine("-------排序前");

            PrintList<Person>(listPerson);

            Console.WriteLine("-------排序后");

            // 继承排序(需要继承 接口 :IComparable<Person>)

            listPerson.Sort();

            PrintList<Person>(listPerson);

            #endregion

            #region 知识三 通过委托函数进行排序

            Console.WriteLine("--------------------通过委托函数进行排序");

            listPerson.Clear();

            listPerson.Add(new Person("张三", 20));

            listPerson.Add(new Person("李四", 18));

            listPerson.Add(new Person("王五", 31));

            listPerson.Add(new Person("曹操", 45));

            Console.WriteLine("-------排序前");

            PrintList<Person>(listPerson);

            // 使用委托==>函数排序

            listPerson.Sort(SortPerson);

            Console.WriteLine("-------排序后");

            PrintList<Person>(listPerson);

            // Lambda 再次排序

            listPerson.Sort((leftP, rightP) => {

                return leftP.age > rightP.age ? 1 : -1;

            });

            

            Console.WriteLine("-------Lambda 再次排序后");

            PrintList<Person>(listPerson);

            #endregion

            Console.ReadLine();

        }

        // 排序函数

        private static int SortPerson(Person leftP, Person rightP)

        {

            // 根据返回值排序  升序

            if (leftP.age > rightP.age)

            {   // 大于0 放后面

                return -1;

            }

            else

            {   // 小于 0 放前面

                return 1;

            }

        }

        // 打印列表中元素的内容

        private static void PrintList<T>(List<T> nList)

        {

            if (nList.Count == 0)

                Console.WriteLine("--列表为空数据");

            for (int i = 0; i < nList.Count; i++)

            {

                Console.WriteLine(nList[i].ToString());

            }

        }

    }

}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/716690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Github下载Failed to connect to github.com port 443: Timed out

方法一&#xff1a; 使用ssh下载的方式 方法二 使用github加速网站 https://gitclone.com ,用命令行&#xff1a; git clone https://http://gitclone.com/http://github.com/xxx/yyy 参考链接 github克隆失败提示“443&#xff1a;Timed out”怎么解决&#xff1f; - 知乎

形式化验证,Complete Formal Verification of TriCore2 and Other Processors(五)

目录 一、Article:文献出处&#xff08;方便再次搜索&#xff09; &#xff08;1&#xff09;作者 &#xff08;2&#xff09;文献题目 &#xff08;3&#xff09;文献时间 &#xff08;4&#xff09;引用 二、Data:文献数据&#xff08;总结归纳&#xff0c;方便理解&am…

Linux 学习记录45(C++篇)

Linux 学习记录45(C篇) 本文目录 Linux 学习记录45(C篇)一、纯虚函数和抽象类1. 纯虚函数2. 抽象类 二、C中的异常处理1. 抛出异常2. 处理/捕获异常 三、模板(template)1. 模板函数(1. 模板函数的定义和调用(2. 模板函数需要显性调用的时机 2. 模板类3. 模板函数和模板类实现的…

【运维】GitLab相关配置优化等

默认 Git 设置 http post 的缓存为 1MB&#xff0c;使用命令将git的缓存设为500M&#xff0c;重新配置一下postBuffer值 git config --global http.postBuffer 524288000 解决方法2&#xff1a;直接修改config参数&#xff0c; windows: ./git/config中&#xff0c;加入以下…

构建无忧:探索 Linux 项目自动化构建神器-make/Makefile

目录 一.make/Makefile的介绍1.理解make/Makefile二.make/Makefile的使用1.基本使用2.PHONY3.特殊符号拓展 一.make/Makefile的介绍 1.理解make/Makefile 编写Makefile是Linux开发中一项重要的技能&#xff0c;熟练的运用这个工具能提高编译效率&#xff0c;帮助你完成大型工…

【Java系列】Java虚拟机—类加载器介绍

什么是Java虚拟机 Java虚拟机&#xff08;Java Virtual Machine&#xff0c;JVM&#xff09;是一个能够执行 Java 字节码的虚拟计算机。它是 Java 技术的核心部分&#xff0c;是 Java 应用程序运行的基础。 Java 程序在编译后会生成字节码&#xff08;bytecode&#xff09;&am…

【动手学习深度学习--逐行代码解析合集】07多层感知机的简洁实现

【动手学习深度学习】逐行代码解析合集 07多层感知机的简洁实现 视频链接&#xff1a;动手学习深度学习–softmax回归简洁实现 课程主页&#xff1a;https://courses.d2l.ai/zh-v2/ 教材&#xff1a;https://zh-v2.d2l.ai/ 1、代码 import torch from torch import nn from d…

uni-app crypto-js DES 加解密 ,支持app , h5,小程序

crypto-js DES 加解密 &#xff0c;支持app,h5&#xff0c;小程序 第一步 npm install crypto-js 可以直接下载示例运行&#xff0c;看控制台打印 下载地址 https://ext.dcloud.net.cn/plugin?id13351 crypto-js DES 加解密 - DCloud 插件市场

科技富豪抑郁了

原美团二当家王慧文据说抑郁了 什么能解决抑郁问题&#xff1f; 趣讲大白话&#xff1a;科技富豪也抑郁 【趣讲信息科技216期】 **************************** 王富豪创立光年之外AI公司2个月就休息了 知识解决不了抑郁问题 抑郁是现代社会一个常见的症状 是压力所带来的综合症…

牛客网Verilog刷题——VL39

牛客网Verilog刷题——VL39 题目答案 题目 设计一个自动贩售机&#xff0c;输入货币有两种&#xff0c;为0.5/1元&#xff0c;饮料价格是1.5/2.5元&#xff0c;要求进行找零&#xff0c;找零只会支付0.5元。 1、投入的货币会自动经过边沿检测并输出一个在时钟上升沿到1&#x…

HTML-表格、表单标签

目录 表格标签 表单标签 表单项标签 表格标签 场景&#xff1a;在网页中以表格&#xff08;行、列&#xff09;形式整齐展示数据&#xff0c;如班级表标签 标签描述属性/备注<table>定义表格整体&#xff0c;可以包裹多个<tr>border:规定表格边框的宽度width&am…

盖雅劳动力管理云完成多方信创适配,打造信创产业生态

为响应国产化和信创战略需求&#xff0c;盖雅工场积极推动产品适配国产操作系统、国产数据库、国产硬件设备和国产处理器&#xff0c;不断拓展公司信创产业链技术升级。 近日&#xff0c;盖雅工场顺利完成多方信创适配&#xff0c;成功与 麒麟Kylin、鲲鹏Kunpeng、达梦数据库…

一键ai绘画怎么使用你清楚吗?

在当代科技的浪潮中&#xff0c;人工智能绘画生成器犹如一位神奇的画笔&#xff0c;以其特别的创造力&#xff0c;将数字代码转化成令人惊叹的艺术杰作。它就像是一位天才魔术师&#xff0c;能从虚无中诞生出栩栩如生的图像&#xff0c;给人们带来触动和美感。 看着这些ai绘画…

VOC数据集介绍以及读取(目标检测object detection)

VOC&#xff08;Visual Object Classes&#xff09;数据集是一个广泛使用的计算机视觉数据集&#xff0c;主要用于目标检测、图像分割和图像分类等任务。VOC数据集最初由英国牛津大学的计算机视觉小组创建&#xff0c;并在PASCAL VOC挑战赛中使用。 VOC数据集包含各种不同类别…

今晚打老虎:用katalon解决接口/自动化测试拦路虎--参数化

#全局变量 右侧菜单栏中打开profile&#xff0c;点击default&#xff0c;打开之后&#xff0c;在default页面点击add添加全局变量 如果你想学习接口自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站播放全网第一的接口自动化测试教程&#xff0c…

ux-grid实现表格排序

需求说明&#xff1a; 1、第一行不参与排序 2、实现带%排序 3、实现null值排序 4、实现值相等不排序 5、实现含有占位符‘–‘排序放到最后 表格属性说明文档 效果图如下&#xff1a; 代码如下&#xff1a; <template><div><ux-gridhighlightCurrentRow:data&…

JavaScript 使用canvas绘制随机生成图形验证码

文章目录 HTML 结构准备CSS 样式准备JavaScript 逻辑部分首先做个准备&#xff1a;声明一个空数组用来随机生成验证码封装一个为canvas标签渲染的函数&#xff0c;用来随机生成验证码还需要封装一个用来生成随机颜色的函数获取到canvas标签为其绑定点击事件为按钮绑定判断点击事…

day1-若依项目前后端分离的初步使用

响应式布局: 做好的产品能在pc端,手机,平板都能正常浏览 开发项目两种方式 1.自己从0开始写代码 2.在若依中下载拥有基础功能的源码 若依使用的mysql版本 mysql5.7 导入别人的项目如何操作 若依项目下载地址**:https://gitee.com/y_project/RuoYi-Vue.git** 可以使用揉…

数学建模——曲线拟合

一、曲线拟合简介 1、曲线拟合问题的提法 已知一组数据&#xff08;二维&#xff09;&#xff0c;即平面上n个点 (xi,yi)(i1,2,…,n)&#xff0c; xi互不相同。寻求一个函数yf(x)&#xff0c;使得f(x)在某种准则下与所有的数据点最为接近&#xff0c;即拟合得最好。 2、…