Avatar ·

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)?如