您当前的位置:首页 > 计算机 > 编程开发 > Kotlin

Kotlin编程技巧

时间:02-05来源:作者:点击数:

获取List或Map中的第一个元素

假设有一个集合,List或Map,我只需要取集合里面的第1个元素,普通代码实现如下:

    val list = mutableListOf("一", "二", "三")
    val map = mutableMapOf("一" to "1", "二" to "2")
    
    
    val result01 = if (list.isNotEmpty()) list[0] else ""
    
    val result02 = if (map.isNotEmpty()) {
        var resultValue = ""
        for ((key, value) in map) {
            resultValue = value
            break
        }
        resultValue
    } else {
        ""
    }

如上代码,实现了获取List或Map中第1个元素的value值,如果没有则使用空字符串,这获取List第1个元素的代码还好,但是获取Map第1个元素的代码就有点恶心了,在不知道key的情况下,获取一个元素就需要遍历,代码写的好臃肿,还好我们的Kotlin有更好的写法,如下:

    val list = mutableListOf("一", "二", "三")
    val map = mutableMapOf("一" to "1", "二" to "2")

    val result01 = list.firstOrNull() ?: ""
    val result02 = map.entries.firstOrNull()?.value ?: ""

Ok,就是这么的舒服,再也不需要判断集合中有没有元素了,代码超短的,爽!

对应的,也有获取最后一个元素的方法:lastOrNull()

获取集合的最后一个索引

在使用集合的时候,比如遍历一个集合的时候,经常会用到判断是否是遍历到最后一个元素了的操作,如下:

val list = listOf(1, 2, 3)
list.forEachIndexed { index, i ->
    if (index == list.size - 1) {
        println("现在是最后一个元素了")
    }
}

list.size - 1表示最后一个元素的索引,这太常用了,所以Kotlin添加了扩展属性,如下:

public val <T> List<T>.lastIndex: Int
    get() = this.size - 1

所以,前面的示例可以优化为:

val list = listOf(1, 2, 3)
list.forEachIndexed { index, i ->
    if (index == list.lastIndex) {
        println("现在是最后一个元素了")
    }
}

这样的代码更易于理解,而且也更简单。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门