日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

List的Sort 函数CompareTo升序降序排序

發(fā)布時(shí)間:2024/3/26 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 List的Sort 函数CompareTo升序降序排序 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、升序、降序

其實(shí)C#中的List的Sort函數(shù)中的比較函數(shù)CompareTo有三種結(jié)果 1, -1 ,0分別代表大,小,相等。默認(rèn)List的排序是升序排序。

舉個(gè)例子:在比較函數(shù)CompareTo()中,如果 x>y return 1;則是按照升序排列。如果x>y return -1;則是按照降序排列。這就是1和-1大小的含義。其實(shí)你非要這么寫 x<y return 1;則也表示降序排列。不過大家一般習(xí)慣x>y return 1;升序,如果想要降序只需return -1;即可。

Tips:系統(tǒng)List默認(rèn)的排序是升序,如果你想要降序,可以直接在比較函數(shù)前面加個(gè)負(fù)號(hào),把返回結(jié)果由1變成-1即可。例如:

List<int> list = new List<int>() { 2, 1, 3, 4 }; list.Sort((x, y) => -x.CompareTo(y)); Console.WriteLine(list); //4,3,2,1
  • ?

二、對于非數(shù)值類型、string等或者官方未來實(shí)現(xiàn)IComparable接口的類型,可通過實(shí)現(xiàn)IComparable接口重寫CompareTo方法來排序。
舉個(gè)例子:自定義一個(gè)類,然后繼承字: IComparable<>,然后實(shí)現(xiàn)接口的方法 int CompareTo(object obj_)就可以了

public class Person : IComparable<Person>{public int id;public string name;public Person(){id = 0;name = "name";}public Person(int id_, string name_){id = id_;name = name_;}public int CompareTo(Person obj_){if (this.id > obj_.id)return 1;elsereturn -1;}}
  • ?

三、多權(quán)重排序
其實(shí)就是對優(yōu)先級(jí)最高的字段進(jìn)行排序,然后在對次級(jí)優(yōu)先級(jí)的字段進(jìn)行排序就可以了。例如對Persond的對象先進(jìn)行ID排序,然后再進(jìn)行Name排序:

public int CompareToIDName(Person x_, Person y_){if (x_.id > y_.id)return 1;else if (x_.id == y_.id){return x_.name.CompareTo(y_.name);}elsereturn -1;}
  • ?

四、使用匿名函數(shù)來實(shí)現(xiàn)Comparison
雖然想實(shí)現(xiàn)排序上面的接口代碼也不多,但有時(shí)候只是偶爾排序,并不想修改類,怎么辦呢?當(dāng)然有更簡單的方法,委托和lambda表達(dá)式:

public void Init(){m_personList.Add(new Person(10001, "Zhao"));m_personList.Add(new Person(10006, "Qian"));m_personList.Add(new Person(10006, "Zhao"));m_personList.Add(new Person(10004, "Li"));m_personList.Add(new Person(10006, "Zhao"));m_personList.Sort();m_personList.Sort(delegate (Person x, Person y){if (x.id > y.id)return 1;elsereturn -1;});m_personList.Sort((x, y) =>{return x.name.CompareTo(y.name);});m_personList.Sort((x, y) => CompareToIDName(x, y));}
  • ?

**List筆記
List賦值到另一個(gè)List的方法,進(jìn)行AddRange。

總結(jié)

以上是生活随笔為你收集整理的List的Sort 函数CompareTo升序降序排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。