C# 泛型List排序的實現
本文主要介紹瞭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()); } } } }
到此這篇關於C# 泛型List排序的實現的文章就介紹到這瞭,更多相關C# 泛型List排序內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- C#實現簡單的飛行棋小遊戲
- C# List 並發丟數據問題原因及解決方案
- 淺談Java中Collections.sort對List排序的兩種方法
- C#實現DVD借出歸還管理系統
- C#代碼延時的幾種實現