目錄
需求:根據自定義的類中欄位實現自定義的排序規則。
解決方案:
實現:方法一:該自定義類實現icomparable介面。
方法二:建立比較器類,該類實現介面icomparer
方法三:實現內建comparison委託
總結:
1.public void sort();
使用預設比較器對整個 system.collections.generic.list`1 中的元素進行排序。這裡的預設比較器就是指comparer.default。要使用預設比較器來排序,則類必須實現icomparable介面,排序的時候會呼叫介面的compareto方法
2.public void sort(icomparercomparer);
使用指定的比較器對整個 system.collections.generic.list`1 中的元素進行排序。
3.public void sort(comparisoncomparison);
使用指定的 system.comparison`1,對整個 system.collections.generic.list`1 中的元素進行排序
其中:comparison是.net內建的乙個委託。
原型為: public delegate int comparison(t x, t y);//兩個同型別的輸入引數,乙個整形返回值的簽名。
表示用於比較相同型別的兩個物件的方法。使用委託,可以傳遞乙個與委託簽名相同的函式,可以使用匿名委託,還可以用lambda表示式。
4.public void sort(int index, int count, icomparercomparer);//與方法三大同小異
class studentdata1:icomparable
public int age
public string gender
public studentdata1(int age, string name, string gender)
static void main(string args)
console.writeline("本類實現icomparable介面後");
data.sort();
foreach (var item in data)
console.readkey();
}//對自定義的studentdata1類實現按照年齡,姓名名稱的順序排序
public int compareto(object obj)
else if (this.age < studentdata1.age)
else
}}
//建立比較器類,該類實現介面icomparer,在不修改已有的類,建立自己的比較器類
class studentdatacompare : icomparer
else if (studentdatax.age < studentdatay.age)
else
}}
static void main(string args)
data.sort(new studentdatacompare());
console.writeline("使用自定義的實現icomparer介面的自定義比較類後");
foreach (var item in data)
console.readkey();
}
static void main(string args)
data.sort(compare);//傳入符合簽名的函式
console.writeline("使用自定義的實現icomparer介面的自定義比較類後");
foreach (var item in data)
console.readkey();
}private static int compare(studentdatacomparsion studentdatacomparsion1, studentdatacomparsion studentdatacomparsion2)
else if (studentdatacomparsion1.age > studentdatacomparsion2.age)
else
}
方法一在當前類中進行修改。方法二在不修改已有的類,建立自己的比較器類,比較靈活。其他的比如
利用lamda表示式,匿名函式這裡暫不做介紹。
C 自定義泛型
using system using system.collections.generic using system.text namespace customgenericcollection public car public class sportscar car 其他方法 public cl...
Java集合整理 自定義泛型
泛型是jdk1.5,新新增的特性,其作用是對集合進行 引數化型別 在jdk1.5之前,還沒有泛型這一概念,集合中的元素是object型別,所以,每次使用集合中的元素時,需要將元素向下造型成對應型別才能使用,錯誤的可能性很大,非常的不方便。為了簡化操作,提高效率,便有了泛型這一新特性,有了泛型,集合就...
泛型集合 排序,比較
集合是oop中的乙個重要概念,c 中對集合的全面支援更是該語言的精華之一。為什麼要用泛型集合?在c 2.0之前,主要可以通過兩種方式實現集合 a.使用arraylist 直接將物件放入arraylist,操作直觀,但由於集合中的項是object型別,因此每次使用都必須進行繁瑣的型別轉換。b.使用自定...