如何从Kotlin中的列表中获取内部消息值?

如何从Kotlin中的列表中获取内部消息值?,kotlin,Kotlin,我正在尝试将列表转换为IntRange,但我不知道如何做。你能帮我吗 val list: List<Int> = (1, 2, 3, 4, 5).toList() val rangeFromTheList: IntRange = ??? // 1..5 您可以从列表中获取最小值和最大值,并从中创建一个范围: val list = listOf(1, 2, 3, 3, 5) val min = list.min() ?: 0 val max = list.max() ?: 0 va

我正在尝试将列表转换为IntRange,但我不知道如何做。你能帮我吗

val list: List<Int> = (1, 2, 3, 4, 5).toList()
val rangeFromTheList: IntRange = ??? // 1..5

您可以从列表中获取最小值和最大值,并从中创建一个范围:

val list = listOf(1, 2, 3, 3, 5)

val min = list.min() ?: 0
val max = list.max() ?: 0
val rangeFromTheList = min..max

或者,如果它总是以升序排列,那么

val list = listOf(1, 2, 3, 3, 5)
val rangeFromTheList: IntRange = list.first()..list.last() // 1..5
你可以做:

fun List<Int>.asRange(): IntRange {
    val range = first()..last()
    if (range.toList() != this) {
        throw IllegalStateException("list is not continuous.")
    }
    return range
}

如果列表中有空白怎么办?
listOf(1, 2, 3, 4, 5).asRange() //OK
listOf(1, 2, 2, 4, 5).asRange() //NOK
listOf(1, 1).asRange() //NOK