Avatar ·

在 Kotlin 中按多个字段对集合进行排序

大家好!我刚开始学习 Kotlin,遇到了按多个字段对对象列表进行排序的问题。例如,我有一个 Person 类: ```kotlin data class Person(val name: String, val age: Int, val height: Double) ``` 以及一个人员列表: ```kotlin val people = listOf( Person("Alice", 25, 165.0), Person("Bob", 30, 180.0), Person("Charlie", 25, 170.0), Person("Alice", 30, 160.0) ) ``` 我需要先按姓名(升序)排序,然后按年龄(升序),最后按身高(降序)。在 Java 中,我会使用 Comparator 配合 thenComparing 链式调用。Kotlin 中有 sortedWith 函数,但我不明白如何正确将其应用于多个字段。我尝试过类似这样的写法: ```kotlin val sorted = people.sortedWith(compareBy({ it.name }, { it.age })) ``` 但这只按两个字段排序。如何添加按身高降序排序?而且,有没有更简洁的方法?非常感谢。