Avatar ·

Ordenação de coleção por vários campos em Kotlin

Olá a todos! Comecei a aprender Kotlin recentemente e me deparei com uma tarefa que parece simples, mas não consigo encontrar uma solução elegante. Tenho uma lista de objetos da classe `Person`: ```kotlin data class Person( val name: String, val age: Int, val salary: Double ) ``` Preciso ordenar esta lista primeiro por idade (crescente), depois, se a idade for igual, por nome (em ordem alfabética), e finalmente, se tanto a idade quanto o nome forem iguais, por salário (decrescente). Em Java, eu usaria uma cadeia de comparators, mas em Kotlin vejo que existe a função `sortedBy`, mas ela aceita apenas um campo. Existe `sortedWith` e `compareBy`, mas não entendo completamente como combiná-los corretamente. Tentei este código: ```kotlin val sortedList = list.sortedBy { it.age }.sortedBy { it.name }.sortedByDescending { it.salary } ``` Mas claramente não funciona, porque cada ordenação subsequente sobrescreve a anterior. Como implementar corretamente uma ordenação de múltiplos níveis?