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的对象、接口、抽象类进行详解!

Guess you like

Origin blog.csdn.net/qq_30382601/article/details/121253448