C# List集合排序方法小結
阿新 • • 發佈:2019-02-08
今天我們來一起看一下關於集合List中的排序方法,大家都知道我們一般拿到一些資料的時候會放到一個容器中去,然後根據其中的一種屬性來進行排序。我們很自然的就能想到sort()方法去自動排序。這樣排序比較快,sort有三種結果 1,-1,0分別是大,小,相等。預設List的排序是升序排序,但是這個方法的後面有過載版本,今天我們一起來看一下吧!
首先我們來建立一個類吧!叫什麼呢?就叫人類吧。
public class People
{
public string name { get; set; }
public int age { get; set; }
}
這個類有兩個屬性,一個是姓名,一個是年齡。接下來我們給它排序吧!
第一種:通過新建類的方式來排序
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestListSort : MonoBehaviour { private List<People> peoples = new List<People>(); // Use this for initialization void Start() { peoples.Add(new People() { name = "小明", age = 21 }); peoples.Add(new People() { name = "小李", age = 24 }); peoples.Add(new People() { name = "小玉", age = 22 }); peoples.Add(new People() { name = "小紅", age = 18 }); peoples.Add(new People() { name = "小王", age = 17 }); peoples.Sort(new PeopleCompare()); foreach (var people in peoples) { print(people.name + people.age); } } static int AgeCompare(People x, People y) { if (x.age > y.age) { return 1; } else if (x.age == y.age) { return 0; } else { return -1; } } class PeopleCompare : IComparer<People> { public int Compare(People x, People y) { return AgeCompare(x, y); } } }
第二種使用委託Comparis來排序
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestListSort : MonoBehaviour { private List<People> peoples = new List<People>(); // Use this for initialization void Start() { peoples.Add(new People() { name = "小明", age = 21 }); peoples.Add(new People() { name = "小李", age = 24 }); peoples.Add(new People() { name = "小玉", age = 22 }); peoples.Add(new People() { name = "小紅", age = 18 }); peoples.Add(new People() { name = "小王", age = 17 }); peoples.Sort(delegate (People p1, People p2) { return p1.age.CompareTo(p2.age); }); foreach (var people in peoples) { print(people.name + people.age); } } }
當然了,這樣也可以用Lambda表示式來排序。顯得更加的簡潔。
peoples.Sort((People p1, People p2) => p1.age.CompareTo(p2.age));
好了,這就是list中sort()方法的過載排序方法啦!今天就寫到這裡吧!