📜  Kotlin 集合排序(1)

📅  最后修改于: 2023-12-03 15:17:10.239000             🧑  作者: Mango

Kotlin 集合排序

在 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() 方法则更加灵活,可以用于自定义排序。通过学习这两种方法,我们可以更加方便地对集合进行排序,提高代码的优雅度和可读性。