網站首頁 編程語言 正文
本文主要介紹了C# 泛型List排序的實現,分享給大家,具體如下:
代碼
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());
}
}
}
}
原文鏈接:https://blog.csdn.net/weixin_45875105/article/details/124874474
相關推薦
- 2022-09-27 Swift超詳細講解指針_Swift
- 2022-08-26 Python?pandas替換指定數據的方法實例_python
- 2022-04-22 git報錯Please make sure you have the correct access
- 2021-12-14 常用時間處理方法
- 2022-05-25 python教程之利用pyautogui圖形自動化擊敗重復性辦公任務_python
- 2022-06-25 PyTorch模型保存與加載實例詳解_python
- 2022-06-28 C語言簡明講解預編譯的使用_C 語言
- 2022-09-21 Android開發之AAR文件的生成與使用步驟_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支