前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kotlin基础--List、Set、Map

kotlin基础--List、Set、Map

作者头像
aruba
发布2021-12-06 17:17:28
6600
发布2021-12-06 17:17:28
举报
文章被收录于专栏:android技术
上次我们学习了kotlin的字符串操作、数字类型、标准库函数,接下来我们来学习集合,和其他变量类型一样,集合也分为可变和只读
一、List
1.List集合创建与元素获取

调用listOf函数创建集合,我们可以通过和数组一样的方式: "变量下标" 来获取元素,或者使用get函数获取

代码语言:javascript
复制
fun main() {
    //listOf创建List集合
    var list = listOf("张三", "李四", "王五")
    
    println(list[0])
    println(list.get(1))
}

kotlin还提供了安全索引取值函数,使用它们就不会下标溢出了

getOrElse:如果不存在,则返回lambda结果

代码语言:javascript
复制
fun main() {
    //listOf创建List集合
    var list = listOf("张三", "李四", "王五")

    println(list.getOrElse(5) { "empty" })
}

getOrNull:如果不存在,返回null

代码语言:javascript
复制
fun main() {
    //listOf创建List集合
    var list = listOf("张三", "李四", "王五")

    println(list.getOrNull(10) ?: "is null")
}
2.可变List集合

调用mutableListOf创建可变list,List不支持增加元素和删除元素,MutableList支持

代码语言:javascript
复制
fun main() {
    //调用mutableListOf创建可变list
    val mutableList = mutableListOf("张三", "李四", "王五")

    mutableList.remove("张三")
    mutableList.add("赵六")
    println(mutableList.getOrElse(1) { "empty" })
    println(mutableList.getOrNull(10) ?: "is null")
}

kotlin还支持利用toList和toMutableList函数实现可变和只读列表的转换

代码语言:javascript
复制
fun main() {
    //调用mutableListOf创建可变list
    val mutableList = mutableListOf("张三", "李四", "王五")

    val list = mutableList.toList()
    val muList = list.toMutableList()
}

kotlin支持和c/c++一样的运算符重载,所以我们可以用 +号 代替 add函数, - 号 代替 remove函数

代码语言:javascript
复制
fun main() {
    //调用mutableListOf创建可变list
    val mutableList = mutableListOf("张三", "李四", "王五")

    mutableList += "孙七"
    mutableList -= "王五"
}

还可以基于lambda表达式指定的条件删除元素

代码语言:javascript
复制
fun main() {
    //调用mutableListOf创建可变list
    val mutableList = mutableListOf("张三", "李四", "王五")

    mutableList.removeIf { it.contains("四") }
}
3.遍历集合

kotlin新增了三种方式遍历集合

代码语言:javascript
复制
fun main() {
    //调用mutableListOf创建可变list
    val mutableList = mutableListOf("张三", "李四", "王五")

    for (item in mutableList) {
        println(item)
    }

    mutableList.forEach { println(it) }

    mutableList.forEachIndexed { index, s ->
        println("$index $s")
    }
}
4.解构

之前我们提到过,kotlin允许在一个表达式中给多个变量赋值

可以用"_"过滤不想要的元素

代码语言:javascript
复制
fun main() {
    //调用mutableListOf创建可变list
    val mutableList = mutableListOf("张三", "李四", "王五")

    val (a, _, c) = mutableList
}
二、Set
1.Set创建与元素获取

通过setOf创建,通过elementAt传入下标获取元素

代码语言:javascript
复制
fun main() {
    val set = setOf("张三", "李四", "王五")
    
    println(set.elementAt(1))
}
2.可变Set

通过mutableSetOf创建,其他的和list一样

代码语言:javascript
复制
fun main() {
    val set = mutableSetOf("张三", "李四", "王五")

    set += "赵四"
    println(set.elementAt(1))
}
3.List转Set,去除重复元素,也可以使用distinct函数
代码语言:javascript
复制
fun main() {
    val list = listOf("张三", "李四", "王五").toSet().toList()
    val list2 = listOf("张三", "李四", "王五").distinct()
}
三、数组

用法和Java相同,也支持新增的遍历方式

四、Map
1.map创建

使用mapOf创建,使用 to 表示键值对,to实际就是调用了实例化了一个Pair类

代码语言:javascript
复制
fun main() {
    val map = mapOf("张三" to 8, "赵四" to 16, "王五" to 20)

    mapOf(Pair("张三", 8), Pair("赵四", 16))
}
2.读取map的值

[]取值运算符,读取key对应的值,不存在返回null

getValue,读取key对应的值,不存在抛异常

getOrDefault,读取key对应的值,不存在返回默认值

getOrElse,读取key对应的值,不存在返回lambda结果

代码语言:javascript
复制
fun main() {
    val map = mapOf("张三" to 8, "赵四" to 16, "王五" to 20)

    println(map["张三"])
    println(map.getValue("张三"))
    println(map.getOrDefault("张三", 0))
    println(map.getOrElse("张三") { "没有对应的key" })
}
3.遍历
代码语言:javascript
复制
fun main() {
    val map = mapOf("张三" to 8, "赵四" to 16, "王五" to 20)

    map.forEach {
        println("${it.key} ${it.value}")
    }

    map.forEach { (key, value) ->
        println("$key $value")
    }
}
4.可变Map

通过mutableMapOf创建,新增getOrPut获取元素,如果不存在,则存入

代码语言:javascript
复制
fun main() {
    val map = mutableMapOf("张三" to 8, "赵四" to 16, "王五" to 20)

    map.getOrPut("孙六") { 0 }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/9/18 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 上次我们学习了kotlin的字符串操作、数字类型、标准库函数,接下来我们来学习集合,和其他变量类型一样,集合也分为可变和只读
  • 一、List
    • 1.List集合创建与元素获取
      • 2.可变List集合
        • 3.遍历集合
          • 4.解构
          • 二、Set
            • 1.Set创建与元素获取
              • 2.可变Set
                • 3.List转Set,去除重复元素,也可以使用distinct函数
                • 三、数组
                • 四、Map
                  • 1.map创建
                    • 2.读取map的值
                      • 3.遍历
                        • 4.可变Map
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档