kotlin 自定義排序

2021-09-27 05:55:40 字數 2478 閱讀 1846

先構造乙個業務類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....