C# 泛型List排序的實(shí)現(xiàn)
本文主要介紹了C# 泛型List排序的實(shí)現(xiàn),分享給大家,具體如下:
代碼
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; // 構(gòu)造 public Person(string name, int age) { this.name = name; this.age = age; } // 重寫字符串 public override string ToString() { return "name: " + this.name + " age: " + this.age; } // 實(shí)現(xiàn)比較接口 public int CompareTo(Person other) { // 根據(jù)返回值排序 升序 if (this.age > other.age) { // 大于0 放后面 return 1; } else { // 小于 0 放前面 return -1; } } } class Program { static void Main(string[] args) { Console.WriteLine("泛型數(shù)組的排序"); #region 知識(shí)一 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 知識(shí)二 自定義類的排序 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 知識(shí)三 通過(guò)委托函數(shù)進(jìn)行排序 Console.WriteLine("--------------------通過(guò)委托函數(shù)進(jìn)行排序"); 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); // 使用委托==>函數(shù)排序 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(); } // 排序函數(shù) private static int SortPerson(Person leftP, Person rightP) { // 根據(jù)返回值排序 升序 if (leftP.age > rightP.age) { // 大于0 放后面 return -1; } else { // 小于 0 放前面 return 1; } } // 打印列表中元素的內(nèi)容 private static void PrintList<T>(List<T> nList) { if (nList.Count == 0) Console.WriteLine("--列表為空數(shù)據(jù)"); for (int i = 0; i < nList.Count; i++) { Console.WriteLine(nList[i].ToString()); } } } }
到此這篇關(guān)于C# 泛型List排序的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C# 泛型List排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c#異步操作后臺(tái)運(yùn)行(backgroundworker類)示例
這篇文章主要介紹了c#異步操作后臺(tái)運(yùn)行(backgroundworker類)示例,需要的朋友可以參考下2014-04-04C#調(diào)用Java類的實(shí)現(xiàn)方法
以下是對(duì)使用C#調(diào)用Java類的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下2013-09-09C#基于TCP協(xié)議的服務(wù)器端和客戶端通信編程的基礎(chǔ)教程
這篇文章主要介紹了C#基于TCP協(xié)議的服務(wù)器端和客戶端通信編程的基礎(chǔ)教程,文中講解了C#中TCP編程主要相關(guān)的TcpListener類與TcpClient類用法,需要的朋友可以參考下2016-04-04Unity打開淘寶app并跳轉(zhuǎn)到商品頁(yè)面功能的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于如何利用Unity打開淘寶app并跳轉(zhuǎn)到商品頁(yè)面功能的相關(guān)資料,這個(gè)功能目前在網(wǎng)上找不到相關(guān)的解決方法,所以自己寫了出來(lái),需要的朋友可以參考下2021-07-07C#實(shí)現(xiàn)動(dòng)態(tài)執(zhí)行字符串腳本(優(yōu)化版)的示例代碼
這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)動(dòng)態(tài)執(zhí)行字符串腳本(優(yōu)化版),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-03-03