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