泛型的3種排序方法

2022-03-20 01:06:59 字數 2006 閱讀 1887

泛型的3種排序方法之三:使用icomparer子類的sort排序方法 收藏

泛型的排序有3種方法,分別是:

1、list.sort(),只能在集合元素實現了icomparable泛型介面時使用

2、list.sort(comparison),comparison是乙個方法委託,它帶有2個引數t,返回int型別,可以靈活指定如何排序,但是需要編碼時手動指定如何排序;

3、list.sort(icomparer),使用實現了icomparer介面的類給集合排序,可以靈活指定如何排序,但是需預先定義好類的排序方法

這裡介紹第三種方法:

首先定義乙個類,用作集合的元素

using system;

using system.collections.generic;

///

/// 學生類

///

public class student

set

}private int age;

// 年齡

public int age

set

}private string grade;

// 年級

public string grade

set

}//建構函式

public student(string name, int age, string grade)

public override string tostring()

}接著定義乙個用於比較的類,實現icomparer泛型介面:

public class studentcomparer : icomparer

private comparetype type;

// 建構函式,根據type的值,判斷按哪個字段排序

public studentcomparer(comparetype type)

#region icomparer成員

public int compare(student x, student y)

}#endregion

}下面就開始排序了:

using system;

using system.collections.generic;

public class test

}這裡介紹第三種方法:

首先定義乙個類,用作集合的元素

using system;

using system.collections.generic;

///

/// 學生類

///

public class student

set

}private int age;

// 年齡

public int age

set

}private string grade;

// 年級

public string grade

set

}//建構函式

public student(string name, int age, string grade)

public override string tostring()

}接著定義乙個用於比較的類,實現icomparer泛型介面:

public class studentcomparer : icomparer

private comparetype type;

// 建構函式,根據type的值,判斷按哪個字段排序

public studentcomparer(comparetype type)

#region icomparer成員

public int compare(student x, student y)

}#endregion

}下面就開始排序了:

using system;

using system.collections.generic;

public class test

}

3個對泛型 List 排序的方法

方式1 list softdrink list manager.softdrink.listsoftdrink list.sort newmycomp compare list.sort newmycompdesc compare public class mycomp icomparer soft...

list泛型排序的方法

如果這樣定義 listlist newlist 那麼只需要用list.sort 即可。就會按照英文單詞進行排序。但是如果這個string是如下類呢?public class dto public int id public string name 這樣定義 listlist newlist 想按照n...

泛型 泛型類 泛型方法 泛型擦除

1 是什麼?一種允許我們在不確定引數型別時候使用的型別。例如我不知道a方法應該會傳string還是int,我就用個泛型先佔坑。2 為什麼要用泛型?泛型可以在編譯期自動確定具體型別,檢查型別是否匹配,可以提高 的重用率,減少冗餘編碼。3 泛型與object的區別?像上面說的我不知道方法a的引數型別,其...