Kotlin中的高效枚举:如何按值进行反向查找?
大家好!我最近开始用Kotlin,遇到了一个问题。
我有一个订单状态的enum类:
```kotlin
enum class OrderStatus(val code: Int) {
PENDING(1),
PROCESSING(2),
SHIPPED(3),
DELIVERED(4),
CANCELLED(5)
}
```
从数据库中我得到状态数字代码(例如3),需要获取对应的enum值——`OrderStatus.SHIPPED`。
我知道在Java中通常用静态`HashMap`做反向查找。但在Kotlin中这显得很笨重。我尝试写了一个扩展函数:
```kotlin
fun OrderStatus.Companion.fromCode(code: Int): OrderStatus? {
return values().find { it.code == code }
}
```
但这运行很慢,因为每次都遍历所有值。对于5个状态还好,但项目中有30多个值的enum,我担心大数据量时会变慢。
问题:如何在Kotlin enums中正确实现高效的反向查找(reverse lookup)?如