Enumeraciones eficientes en Kotlin: ¿cómo hacer una búsqueda inversa por valor?
¡Hola a todos! He estado escribiendo en Kotlin recientemente y me encontré con esta tarea.
Tengo una clase enum para los estados de pedido:
```kotlin
enum class OrderStatus(val code: Int) {
PENDING(1),
PROCESSING(2),
SHIPPED(3),
DELIVERED(4),
CANCELLED(5)
}
```
Desde la base de datos obtengo un código numérico de estado (por ejemplo, 3), y necesito obtener el valor enum correspondiente — `OrderStatus.SHIPPED`.
Sé que en Java a menudo se usa un `HashMap` estático para la búsqueda inversa. Pero en Kotlin esto parece engorroso. Intenté escribir una función de extensión:
```kotlin
fun OrderStatus.Companion.fromCode(code: Int): OrderStatus? {
return values().find { it.code == code }
}
```
Pero esto funciona lentamente porque recorre todos los valores cada vez. Para 5 estados no es crítico, pero en el proyecto hay un enum con 30+ valores, y temo que con datos grandes esto se ralentice.
Pregunta: ¿cómo implementar correctamente una búsqueda inversa (reverse lookup) eficiente en enums de Kotlin? Si
No answers yet.
Inicia sesión para dejar una respuesta