Ordenamiento de una colección por varios campos en Kotlin
¡Hola a todos! Acabo de empezar a aprender Kotlin y me encontré con una tarea que parece simple, pero no puedo encontrar una solución elegante.
Tengo una lista de objetos de la clase `Person`:
```kotlin
data class Person(
val name: String,
val age: Int,
val salary: Double
)
```
Necesito ordenar esta lista primero por edad (ascendente), luego, si la edad es la misma, por nombre (en orden alfabético), y finalmente, si tanto la edad como el nombre coinciden, por salario (descendente).
En Java usaría una cadena de comparadores, pero en Kotlin veo que hay una función `sortedBy`, pero solo acepta un campo. Hay `sortedWith` y `compareBy`, pero no entiendo completamente cómo combinarlos correctamente.
Probé este código:
```kotlin
val sortedList = list.sortedBy { it.age }.sortedBy { it.name }.sortedByDescending { it.salary }
```
Pero claramente no funciona, porque cada ordenamiento posterior sobrescribe el anterior. ¿Cómo implementar correctamente un ordenamiento de múltiples niveles?
No answers yet.
Inicia sesión para dejar una respuesta
Blogs