📅  最后修改于: 2023-12-03 15:23:11.935000             🧑  作者: Mango
在 Kotlin 中,我们可以轻松地对自定义对象列表进行排序。这个过程需要实现比较器函数,然后将比较器函数传递给排序函数。
比较器函数需要实现 Comparator
接口,该接口包含一个 compare
函数,我们需要在这个函数中定义自定义对象的比较规则。
让我们通过一个简单的例子来演示如何实现比较器函数:
data class Person(val name: String, val age: Int)
fun main() {
val personList = listOf(
Person("Alice", 28),
Person("Bob", 21),
Person("Charlie", 35)
)
val sortedList = personList.sortedWith(compareBy { it.age })
sortedList.forEach { println(it) }
}
在这个例子中,我们定义了一个 Person
类来存储人员信息,包括姓名和年龄。接着,我们创建了一个人员列表,并使用 sortedWith
函数对列表进行排序。
compareBy
函数接受一个 lambda 表达式作为参数,该 lambda 表达式返回一个用于比较的属性。在这个例子中,我们使用 it.age
作为比较属性,表示按年龄从小到大排序。
注意,我们可以使用 compareByDescending
函数来表示按照相反的顺序排序。
除了使用 sortedWith
函数外,我们还可以使用 sortedBy
函数,该函数接受一个 lambda 表达式来表示比较属性。在这种情况下,我们需要将比较器函数作为第二个参数传递给 sortedBy
函数。
data class Person(val name: String, val age: Int)
fun main() {
val personList = listOf(
Person("Alice", 28),
Person("Bob", 21),
Person("Charlie", 35)
)
val sortedList = personList.sortedBy({ it.age }, compareBy { it.name })
sortedList.forEach { println(it) }
}
在这个例子中,我们使用 sortedBy
函数来排序人员列表,显示先按照年龄排序,然后按照姓名排序。
在 Kotlin 中,对自定义对象列表进行排序可以使用 sortedWith
或 sortedBy
函数。我们需要实现一个比较器函数,并将其传递给排序函数。比较器函数应该实现 Comparator
接口,用于定义自定义对象的比较规则。