先構造乙個業務類person 及 person集合
//定義乙個person類,有name 和 age 兩屬性
data class person(var name: string, var age: int)
var personlist: mutablelist = mutablelistof()
personlist.add(person(「jim」, 12))
personlist.add(person(「a-lin」, 12))
personlist.add(person(「tom」, 11))
personlist.add(person(「mary」, 14))
使用 sortby 排序
fun main(args: array) )
//或者寫成
personlist.foreach(::println)}
執行結果如下:
----排序前----
person(name=jim, age=12)
person(name=a-lin, age=12)
person(name=tom, age=11)
person(name=mary, age=14)
----排序後----
person(name=tom, age=11)
person(name=jim, age=12)
person(name=a-lin, age=12)
person(name=mary, age=14)
sortby 為正序排列,跟其對應的降序方法為 sortbydescending
personlist.sortbydescending()
//執行的結果為
----排序後----
person(name=mary, age=14)
person(name=jim, age=12)
person(name=a-lin, age=12)
person(name=tom, age=11)
3. 使用 sortwith 排序
實際情況下,我們的業務需求往往需要根據多個條件來排序,這時我們就需要用到 sortwith 方法
//先根據age 公升序排列,若age相同,根據name公升序排列
personlist.sortwith(compareby(, ))
// 執行結果如下:
----排序後----
person(name=tom, age=11)
person(name=a-lin, age=12)
person(name=jim, age=12)
person(name=mary, age=14)
sortwith 方法中,傳入的 compareby(,,…)引數, compareby() 這裡的引數個數是可變的,但是都是預設的公升序排列。所以我們還可以根據自己的實際需求,給sortwith傳入乙個comparator物件,來達到乙個更高階更複雜的邏輯
//構造乙個comparator物件,完成排序邏輯:先按age降序排列,若age相同,則按name公升序排列
val c1: comparator = comparator else
}personlist.sortwith(c1)
// 執行結果如下:
----排序後----
person(name=mary, age=14)
person(name=a-lin, age=12)
person(name=jim, age=12)
person(name=tom, age=11)
4. 通過 data class 實現 comparable 介面來排序
重新構造 person 類
data class person(var name: string, var age: int) : comparable else }}
呼叫 list.sorted()方法排序
//sorted 方法返回排序好的list
val sorted = personlist.sorted()
sorted.foreach(::println)
//執行結果如下:
----排序後----
person(name=mary, age=14)
person(name=a-lin, age=12)
person(name=jim, age=12)
person(name=tom, age=11)
1.首先定義乙個內部類,用於比較list中兩個數的大小
inner class user : comparable
}2.對list進行排序
val list = arraylist()
private fun dataorder()
user2?.let
user3?.let
collections.sort(list)
for (u in list)
DataGridView自定義排序
net自帶datagridview排序貌似最終都是用datagridview.sort 發現當是用排序後,datagridview將把排序前的行樣式等重置,仔細測試後覺得貌似是排序時datagridview重新繫結了資料來源,具體不得而知.實在沒有辦法破解,我也不想重新寫比較來排序,用了最土的辦法,...
QTableWidget 自定義排序
qtablewidget功能強大,可以在每個格仔裡新增自己的wiget部件。如果想對這些自己新增的widget進行排序有兩種方法。一種是直接設定每個格仔對應的qtablewidgetitem的值,因為qtablewidget預設是據qtablewidgetitem來排序,呼叫的比較函式是 bool ...
python list 自定義排序
看到的乙個知識點,稍加記錄 a 希望將上述的list排序,按照每條記錄中的 score 排序。如果 score 欄位的值相等,則按照 first 的值排序。如果 first 依舊相等,則按照 second 排序。如果 second 相等,則按照 third 欄位的值來排序。a.sort.doc l....