在 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 }
```
但这显然不行,因为每个后续排序会覆盖前一个排序。如何正确实现多级排序呢?