Kotlin 中的多欄位集合排序
集合是一個物件,開發人員可以在其中在一個地方分組各種型別的相關物件。Kotlin 庫中存在不同型別的集合,例如 List、Array 等。
在本文中,我們將瞭解如何根據集合中存在的不同屬性對集合進行排序。為此,我們將藉助 Kotlin 庫提供的以下兩個函式。
sortedWith()
compareBy()
sortedWith()
sortedWith() 是 Kotlin 庫提供的函式,它返回按指定比較器排序的所有元素的列表。根據 Kotlin 官方文件,函式定義如下:
fun <T> Array<out T>.sortedWith( comparator: Comparator<in T> ): List<T>
sortedWith() 以比較器作為引數,比較每個物件的自定義屬性並對其進行排序。
compareBy()
compareBy() 負責建立我們將傳遞給sortedWith() 的比較器,以便對物件屬性進行排序。根據 Kotlin 文件,函式定義如下:
fun <T> compareBy( vararg selectors: (T) -> Comparable<*>? ): Comparator<T>
示例
在下面的示例中,我們將建立一個名為Student的類,它將儲存不同型別的值,例如學生姓名、年齡和相應的 GPA。我們希望對整體進行排序,而不僅僅是按“年齡”或“GPA”排序。
fun main()
{
val studentA=Student("Student A",18,7.0)
val studentB=Student("Student B",18,6.9)
val studentC=Student("Student C",20,7.3)
val studentD=Student("Student D",22,8.3)
val studentsList=listOf(
studentA,
studentB,
studentC,
studentD
);
val sortedList=studentsList.sortedWith(
compareBy(
{it.age},
{it.GPA}
)
)
sortedList.forEach {
println("name: ${it.name}, age: ${it.age}, GPA: ${it.GPA}")
}
}
class Student(val name:String, val age:Int, val GPA: Double)輸出
執行程式碼後,將生成以下輸出:
name: Student B, age: 18, GPA: 6.9 name: Student A, age: 18, GPA: 7.0 name: Student C, age: 20, GPA: 7.3 name: Student D, age: 22, GPA: 8.3
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP