📅  最后修改于: 2023-12-03 15:17:10.239000             🧑  作者: Mango
在 Kotlin 中,有许多方式可以对集合进行排序。在本篇文章中,我们将讨论其中两种最常用的方式:使用 sortedBy()
和 sortedWith()
方法。
sortedBy()
sortedBy()
方法是 Kotlin 标准库中一个非常有用的方法,它可用于对集合进行根据指定的属性或者函数进行排序。下面是一个例子:
data class Person(val name: String, val age: Int)
fun main() {
val people = listOf(
Person("Alice", 28),
Person("Bob", 24),
Person("Charlie", 32),
Person("David", 19)
)
val sortedPeople = people.sortedBy { it.age }
println(sortedPeople)
}
上面的代码将打印出按照年龄升序排列的人员列表。
sortedBy()
方法以一个 lambda 表达式作为参数。它会根据 lambda 表达式的结果进行排序。在上面的例子中,我们使用了 it.age
表达式作为排序的标准。
sortedWith()
sortedWith()
方法是一个更为灵活的方法,它可以接受一个 Comparator
对象,用于对集合进行自定义排序。下面是一个例子:
data class Person(val name: String, val age: Int)
fun main() {
val people = mutableListOf(
Person("Alice", 28),
Person("Bob", 24),
Person("Charlie", 32),
Person("David", 19)
)
val comparator = Comparator<Person> { p1, p2 -> p1.name.compareTo(p2.name) }
people.sortWith(comparator)
println(people)
}
上面的代码将打印出按照姓名升序排列的人员列表。
sortedWith()
方法也可以用于升序和降序排列。下面是一个例子:
data class Person(val name: String, val age: Int)
fun main() {
val people = mutableListOf(
Person("Alice", 28),
Person("Bob", 24),
Person("Charlie", 32),
Person("David", 19)
)
// 按照年龄升序排列
val ascendingComparator = Comparator<Person> { p1, p2 -> p1.age.compareTo(p2.age) }
people.sortWith(ascendingComparator)
println(people)
// 按照年龄降序排列
val descendingComparator = Comparator<Person> { p1, p2 -> p2.age.compareTo(p1.age) }
people.sortWith(descendingComparator)
println(people)
}
本篇文章介绍了 Kotlin 中如何使用 sortedBy()
和 sortedWith()
方法对集合进行排序。其中,sortedBy()
方法是用于根据属性或者函数进行排序的更为常用的方法。而 sortedWith()
方法则更加灵活,可以用于自定义排序。通过学习这两种方法,我们可以更加方便地对集合进行排序,提高代码的优雅度和可读性。