В случае, если вам нужно делать это часто, инициализация карты достаточно проста:
enum class ParkingLotStatus (val number:Int, var occupied: Boolean) {
LOT1(1,true),
LOT2(2,false);
companion object {
private val map = values().associateBy { it.value }
fun byValue(number: Int): ParkingLotStatus? = map[number]
}
}
Проблема в том, что поиск в хэш-карте может на самом деле медленнее, чем итерация небольшого массива. Простым и надежным улучшением будет сохранение массива значений:
enum class ParkingLotStatus (val number:Int, var occupied: Boolean) {
LOT1(1,true),
LOT2(2,false);
companion object {
private val allValues = values()
fun byValue(number: Int): ParkingLotStatus? = allValues.find { it.number == number }
}
}