栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android—Kotiln基础教程(四)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android—Kotiln基础教程(四)

前言

在上一篇中,主要讲解了Kotlin字符串、数字类型、标准库函数对应的知识点。在本篇中,将会讲解Kotlin集合相关的知识点。

1. List集合 1.1 只读集合
val list = listOf("json", "jack", "jacky")
fun main{
    //只读列表 ;不能写入,不能更改属性
    println(list.getOrElse(10) { "Unknown" })
    println(list.getOrNull(10))
    println(list.getOrNull(10) ?: "Unknown")
    //list+="sdfdsf" 直接报错!
}

当使用 listOf创建集合时,对应集合只能被读取,不能够被修改,强制修改直接报语法错误!
其他读取方法:

  • getOrElse 方法表示,如果没获取到,将返回else后面闭包的内容!
  • getOrNull 方法表示,如果没获取到,将直接返回为null!

运行效果

Unknown
null
Unknown

这里我们看到。通过 listOf创建集合只能被读取,不能被修改,那如果想要一个可修改的集合该怎样呢?

1.2 可修改集合
fun main{
    val mutableList = mutableListOf("json", "jack", "jacky")
    mutableList += "tom"
    println(mutableList)
    mutableList -= "jack"
    println(mutableList)
    mutableList.removeIf { it.contains("tom") }
    println(mutableList)
}

运行结果

[json, jack, jacky, tom]
[json, jacky, tom]
[json, jacky]

通过mutableListOf定义的集合就可以对集合进行添加和删除。还可以调用一些逻辑性方法对集合进行修改。

1.3 遍历集合
val list = listOf("json", "jack", "jacky")
fun main() {
    //遍历集合
    for (s in list) {
        println(s)
    }
    list.forEach {
        println(it)
    }
    list.forEachIndexed { index, s ->

        println("$index   $s")
    }
}

运行结果

json
jack
jacky
json
jack
jacky
0   json
1   jack
2   jacky

都很简单,直接快速过掉。

1.4 集合解构
val list = listOf("json", "jack", "jacky")
fun main{
    // 解构
    val (origin, _, proxy) = list
    //println("$_") 报错
    println("$origin   $proxy    ")
}

运行效果

json    jacky

注意看,这里使用了val ()语法,将集合list里面的数据拆分出来。第二个参数_下划线,表示跳过当前解构,并且不可使用,强制使用将会报语法错误。

2. set集合 2.1 只读集合
fun main{
    // 只读集合
    val set = setOf("kotlin", "java", "scala")
    set.elementAt(2).run(::println)
}

运行效果

scala

这里和上面一样,只能只读,不可修改。

2.2 可变集合
fun main{
    val mutableSet = mutableSetOf("kotlin", "java", "scala")
    mutableSet += "python"
    println(mutableSet)
    mutableSet.elementAtOrElse(10) { "error" }.run(::println)
}

运行效果

[kotlin, java, scala, python]
error

当使用mutableSetOf定义set集合时,可以对集合进行修改操作。

3. 集合去重
fun main{
  listOf("json", "jack", "jacky", "tom", "jack")
        .toSet()
        .toList()
        .run(::println)

    listOf("json", "jack", "jacky", "tom", "jack").distinct().run(::println)
}

运行效果

[json, jack, jacky, tom]
[json, jack, jacky, tom]

众所周知, 在List集合中,可能会插入相同的数据,而在Set集合中,相同的键将会直接替换。所以当List集合中出现重复元素时,可以采用转set的方式,或者调用distinct方法,方可去重!

4. map集合
fun main{
    val map = mapOf("jack" to 20, "tom" to 15, "bob" to 32)
    println(map)
    //直接通过键获取对应的值
    map["jack"].run(::println)
    //也可通过getValue 方式
    map.getValue("jack").run(::println)
    //如果没找到,那么返回else闭包内容
    map.getOrElse("aa") { "error" }.run(::println)
    //如果没找到,那么返回默认值
    map.getOrDefault("err", 0).run(::println)
    map.forEach { (key, value) ->
        println("$key,  $value")
    }
    
    //强转为可修改集合
    val mutableMap = map.toMutableMap()
    mutableMap += "jimmy" to 30
    mutableMap["Jimmy"] = 32
    println(mutableMap.getOrPut("jimmy") { 18 })
    println(mutableMap.getOrPut("Rose") { 18 })
    println(mutableMap)
}

运行效果

{jack=20, tom=15, bob=32}
20
20
error
0
jack,  20
tom,  15
bob,  32

从这个结果可知,当使用toMutable关键字时,可将只读集合强转为可修改集合。

结束语

好了,本篇到这里就结束了,相信看完这篇的小伙伴对集合使用有所了解了。在下一篇中,将会对Kotlin的对象、接口、抽象类进行详解!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/462545.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号