Avatar ·

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

大家好!我刚开始学习 Kotlin,遇到了一个看似简单但找不到优雅解决方案的问题。 我有一个 `Person` 类对象的列表: ```kotlin data class Person( val name: String, val age: Int, val salary: Double ) ``` 我需要先按年龄(升序)排序,然后如果年龄相同,按姓名(字母顺序)排序,最后如果年龄和姓名都相同,按薪资(降序)排序。 在 Java 中,我会使用比较器链,但在 Kotlin 中,我看到有 `sortedBy` 函数,但它只接受一个字段。还有 `sortedWith` 和 `compareBy`,但我不太清楚如何正确组合它们。 我尝试了这样的代码: ```kotlin val sortedList = list.sortedBy { it.age }.sortedBy { it.name }.sortedByDescending { it.salary } ``` 但这显然不行,因为每个后续排序会覆盖前一个排序。如何正确实现多级排序呢?